4

私はラムダ式の使い方を学んでいて、数日前に Dapper をオンにしました。listViewアカウントのメンテナンスのために選択されるユーザー名を入力するアプリに取り組んでいます。並べ替えの一部に問題があります。

  • Dapper クエリを使用してオブジェクトのコレクションを取得し、変数に割り当てていますGlobal.allUsers
  • List<int> migratedすでに使用されているID ( ) のリストがあるため、listView
  • 次を使用して、すべてのユーザーのリストを取得しています。

    var  uniqUsers = Global.allUsers.OrderBy(n => n.lastNames).GroupBy(q => q.salesIDs);
    

に移行されていないユーザーのみを入力するには、移行さlistViewれていないユーザーのみを選択する必要があります。ある種の. それを選択する方法が必要なようです。q.salesIDsmigratedforeach

確かに、uniqUsersとにかくループしてlistView、各オブジェクトのプロパティから値を設定しています。現在の ID が にあるかどうかを確認するステートメントを追加することはできますがmigrated、私の直感は、select ステートメントを使用してそれを行うことができ、ステップを節約できると言っているだけです。

私はこのようなことを考えています:

 var  uniqUsers = Global.allUsers.Where(i => i.salesIDs not in migrated).OrderBy(n => n.lastNames).GroupBy(q => q.salesIDs);

しかし、i => i.salesIDs not in migratedそれをカットしていません。

4

1 に答える 1

4

これはあなたが必要とすることをします:

var uniqUsers = allUsers.Where(x => migrated.Contains(x.salesIDs))
                        .OrderBy(y => y.lastNames)
                        .GroupBy(z => z.salesIDs).SelectMany(v => v).ToList();

が にあるすべてのユーザーを取得し、 で並べ替え、salesIDmigratedグループlastNames化しsalesIDます。はSelectMany()要素をシーケンスにToList()射影し、 は結果を列挙します。

于 2013-08-14T13:29:52.387 に答える