Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在列表中添加列表_C#_List - Fatal编程技术网

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的具体问题/情况。谢谢!工作完美!!