C# 在列表中添加列表
您好,谢谢您抽出时间! 我有两份清单要放在一起。我看不出这在我的情况下是怎么可能的。想法 我的代码是这样的:C# 在列表中添加列表,c#,list,C#,List,您好,谢谢您抽出时间! 我有两份清单要放在一起。我看不出这在我的情况下是怎么可能的。想法 我的代码是这样的: Random rnd = new Random(); userList = userList.OrderBy(user => -user.ID).Take(userCount).ToList(); userList = userList.OrderBy(user => -user.ID).Take(userCou
Random rnd = new Random();
userList = userList.OrderBy(user => -user.ID).Take(userCount).ToList();
userList = userList.OrderBy(user => -user.ID).Take(userCountRandom).ToList();
正如你所看到的,我想把userlist放在userlist中,这样我就可以完成列表中的两个函数。
整个概念是,我想从我的用户列表中列出用户,其中一些应该从数据库中随机列出,一些应该是前10名的注册用户。添加的第一个列表是一个最新注册的列表,另一个列表洗牌用户。简单地将一个列表与另一个列表合并:
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);
只需将一个列表与另一个列表合并:
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);
你可以用
或者,如果不希望重复,请使用Union:
userList = userList
.OrderBy(user => -user.ID)
.Take(userCount)
.Union(
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();
如果要连接两个列表,可以使用linq的
Concat
扩展方法。如果您不希望重复(在您的示例中可能会发生),您可能希望使用Union
在您的示例中,只要取userCount
和userCountRandom
的最大值就足够了,因为列表是按-user.ID
排序的,因此这两个列表的并集将等于两者中的较大值
考虑到你的想法,我想你想要
userList = userList.OrderBy(user => -user.ID)
.Take(userCount)
.Union(userList.OrderBy(user => rnd.Next())
.Take(userCountRandom))
.ToList();
如果要连接两个列表,可以使用linq的
Concat
扩展方法。如果您不希望重复(在您的示例中可能会发生),您可能希望使用Union
在您的示例中,只要取userCount
和userCountRandom
的最大值就足够了,因为列表是按-user.ID
排序的,因此这两个列表的并集将等于两者中的较大值
考虑到你的想法,我想你想要
userList = userList.OrderBy(user => -user.ID)
.Take(userCount)
.Union(userList.OrderBy(user => rnd.Next())
.Take(userCountRandom))
.ToList();
我认为您需要的是,您可以编写
OrderByDescending(user=>user.ID)
并获得相同的结果,同时代码更清晰。谢谢您的提示@TimS.)我认为您需要的是,您可以编写OrderByDescending(user=>user.ID)
并获得相同的结果,同时代码更清晰。谢谢您的提示@TimS.)虽然这会起作用,但是有更好的方法来洗牌列表,或者从列表中选择一些随机元素。@TimS。当这是我选择的答案时,我已经链接了第一个问题,只是想链接到op的具体问题/情况。谢谢!工作完美!!虽然这会起作用,但是有更好的方法来洗牌列表,或者从列表中选择一些随机元素。@TimS。当这是我选择的答案时,我已经链接了第一个问题,只是想链接到op的具体问题/情况。谢谢!工作完美!!