0

私はリストしなければなりません。

List<User>

List<Friends>

ユーザーには 10 列があり、そのうちの 1 つは「UserID」です。フレンドには 4 列があり、そのうちの 1 つは「UserIDActive」です。

今、私はすべてのユーザーだけがそこにいて、友達にもいる新しいリストを作りたいと思っています。Coloum UserID == UserIDActive を介して接続され、同じ値を持ちます。

どうやってするか?.contain を使用すると、同じオブジェクトを含む 2 つのリストしかチェックできません。

4

2 に答える 2

3

これは、単純な結合で行うことができます。

var matchingUsers = users
    .Join(friends, u => u.UserID, f => f.UserIDActive, (u, f) => u);

この のオーバーロードは、次のJoin4 つの引数を取ります。

  1. 参加するコレクション
  2. 参加するオリジナルコレクションの鍵
  3. 参加するコレクションの参加キー
  4. 結果セレクター

必要に応じて、次のようにユーザーとフレンドを含む匿名型を返すことができます。

var matches = users
    .Join(friends, u => u.UserID, f => f.UserIDActive, (u, f) => new
    {
        User = u,
        Friend = f
    });

重複している可能性がある場合は、必ず使用してくださいDistinct

var matchingUsers = users
    .Join(friends, u => u.UserID, f => f.UserIDActive, (u, f) => u)
    .Distinct;
于 2013-09-07T17:33:00.507 に答える
1

List<User> newUserList = Users.Where(user => Friends.Select(friend => friend.UserIDActive).Contains(user.UserID));

于 2013-09-07T17:31:02.943 に答える