Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
订单通用列表<;T>;按一定顺序.NET_.net_List - Fatal编程技术网

订单通用列表<;T>;按一定顺序.NET

订单通用列表<;T>;按一定顺序.NET,.net,list,.net,List,我有一个问题,以某种规则的顺序列表 实际上我有链接对象列表,例如列表列表 链接类它是以这种方式构建的: private class Links { public Int32 IdHost { get; set; } public String Url { get; set; } } 现在,我使用这段代码按IdHost对列表进行排序 var listSortedById = source .Order

我有一个问题,以某种规则的顺序列表

实际上我有链接对象列表,例如列表列表

链接类它是以这种方式构建的:

private class Links
 { 
            public Int32 IdHost { get; set; }
            public String Url { get; set; }
 }
现在,我使用这段代码按IdHost对列表进行排序

var listSortedById = source
                     .OrderBy(n => n.IdHost).ToList();
问题现在开始了,因为我希望idHost==2应该在列表中每隔5个元素放置一个,而不是每个元素放置一个

更新示例

例如:211313344411234343444141413131313343434324413131333244444我的意思是每5个元素放置idHost==2

首先出现的元素应该是idHost==2。
有没有办法让Linq做到这一点?

不要让自己太难受。如果你想得太多,你会找到非常复杂的解决方案,以非直观的方式使用LINQ。相反,亲吻

首先,对没有
IdHost==2
的项进行排序,并将这些项放入列表中:

var sorted = source.Where(x => x.IdHost != 2)
                   .OrderBy(x => x.IdHost)
                   .ToList();
然后,收集具有
IdHost==2
的项目:

var twos = source.Where(x => x.IdHost == 2);
最后,在列表中每隔5个位置插入以下项目:

int index = 0;
foreach(var two in twos) {
    sorted.Insert(index, two);
    index += 5;
}

其他元素应该如何排序?如果您按ID订购,则为2111133324444。。。和你说的不一样。就像我所理解的,每个Id都可以存在不止一次。如何确定相同的ID中的哪一个最先出现?我们需要更多的细节。也许一个关于你想要达到的目标的解释会帮助你理解正确的,我错了写例子:D应该是2111133324444。我更新了问题是的,你是对的:)我在寻找一个复杂的解决方案。顺便说一下,我认为应该是sort.Insert而不是Add。谢谢