在列表中添加列表

时间:2013-10-16 11:44:44

标签: c# list

您好,感谢您抽出宝贵时间! 我有两个列表,我想放在一起。在我的案例中看不出这是怎么可能的。想法?

这就是我的代码的样子:

Random rnd = new Random();
                userList = userList.OrderBy(user => -user.ID).Take(userCount).ToList();
                userList = userList.OrderBy(user => -user.ID).Take(userCountRandom).ToList();

如您所见,我想将用户列表放在用户列表中,这样我就可以完成列表中的两个功能。 整个概念是我想从我的用户列表中列出用户,其中一些应该从数据库中下载,有些应该是前10名注册。并且添加的第一个列表是最新注册的列表,另一个列表则会对用户进行洗牌。

3 个答案:

答案 0 :(得分:4)

如果要连接两个列表,可以使用linq的Concat扩展方法。如果您不想要重复(在您的示例中可能会发生重复),您可能需要使用Union

在您的示例中,userCountuserCountRandom的最大值就足够了,因为列表按-user.ID排序,因此这两个列表的并集将等于这两者中的较大者。

考虑到previous question,我认为你需要像

这样的东西
userList = userList.OrderBy(user => -user.ID)
                   .Take(userCount)
                   .Union(userList.OrderBy(user => rnd.Next())
                                  .Take(userCountRandom))
                   .ToList();

答案 1 :(得分:2)

您可以使用Concat

userList = userList
   .OrderBy(user => -user.ID)
   .Take(userCount)
   .Concat(
userList
   .OrderBy(user => -user.ID)
   .Take(userCountRandom)
  ).ToList();

或者,如果您不想要重复,请使用Union:

userList = userList
       .OrderBy(user => -user.ID)
       .Take(userCount)
       .Union(
    userList
       .OrderBy(user => -user.ID)
       .Take(userCountRandom)
      ).ToList();

答案 2 :(得分:0)

简单地将一个列表与另一个列表连接起来:

Random rnd = new Random();
var firstUserList = userList.OrderBy(user => -user.ID).Take(userCount).ToList();
var secondUserList = userList.OrderBy(user => -user.ID).Take(userCountRandom).ToList();

var mergedUserList = firstUserList.Concat(secondUserList);