0

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

这就是我的代码的样子:

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

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

4

3 回答 3

4

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

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

考虑到您之前的问题,我认为您想要类似的东西

userList = userList.OrderBy(user => -user.ID)
                   .Take(userCount)
                   .Union(userList.OrderBy(user => rnd.Next())
                                  .Take(userCountRandom))
                   .ToList();
于 2013-10-16T11:48:23.063 回答
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();
于 2013-10-16T11:48:08.480 回答
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);
于 2013-10-16T11:47:55.163 回答