LINQ Union - 字符串保持orderby

时间:2015-12-04 12:02:51

标签: c# linq union

return new List<string> { newItem }.Union(currentList.Take(9));

如何将newItem保持在最顶层?这看起来很简单,但我的大脑已冻结。

它自然地对字符串进行排序,这意味着我的newItem可以出现在列表中的任何位置。我currentList.Remove(newItem);只是因为它已经在那里了。

1 个答案:

答案 0 :(得分:3)

尝试使用Concat代替Union,前者应该保留顺序,而后者是一个集合方法,可以删除重复项并且不保证任何顺序:

return new List<string> { newItem }.Concat(currentList.Take(9));

这适用于Linq-To-Objects here

  

枚举此方法返回的对象时,Union   按顺序枚举第一个和第二个,并产生每个元素   还没有屈服。

但它也适用于数据库驱动的LINQ提供程序Linq-To-SqlLinq-To-Entities,因为UNION ALLUNION行为相似(前者保持顺序,后者不行)。< / p>