您好,感谢您抽出宝贵时间! 我有两个列表,我想放在一起。在我的案例中看不出这是怎么可能的。想法?
这就是我的代码的样子:
Random rnd = new Random();
userList = userList.OrderBy(user => -user.ID).Take(userCount).ToList();
userList = userList.OrderBy(user => -user.ID).Take(userCountRandom).ToList();
如您所见,我想将用户列表放在用户列表中,这样我就可以完成列表中的两个功能。 整个概念是我想从我的用户列表中列出用户,其中一些应该从数据库中下载,有些应该是前10名注册。并且添加的第一个列表是最新注册的列表,另一个列表则会对用户进行洗牌。
答案 0 :(得分:4)
如果要连接两个列表,可以使用linq的Concat
扩展方法。如果您不想要重复(在您的示例中可能会发生重复),您可能需要使用Union
。
在您的示例中,userCount
和userCountRandom
的最大值就足够了,因为列表按-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);