订单通用列表<;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。谢谢