检查两个列表相互之间的功能?

时间:2013-09-07 17:27:33

标签: asp.net list

我必须列出。

List<User>

List<Friends>

在用户中有10个Coloumns,其中一个是“UserID”,在朋友中我们有4个Coloumns,其中一个是“UserIDActive”。

现在我想要一个新的列表,其中只有所有用户都在其中,这些用户也在朋友中。通过Coloum UserID == UserIDActive连接,具有相同的值。

怎么做? 使用.contain,我只能检查两个包含相同对象的列表。

2 个答案:

答案 0 :(得分:3)

您可以通过简单的连接来完成此操作:

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

Join的重载需要四个参数:

  1. 加入
  2. 的集合
  3. 加入原始馆藏的关键
  4. 加入集合加入的关键
  5. 结果选择器
  6. 如果需要,您可以返回包含用户和朋友的匿名类型,如下所示:

    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;
    

答案 1 :(得分:1)

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