LINQ Union - 字符串保持排序

本文关键字:排序 字符串 Union LINQ | 更新日期: 2023-09-27 18:25:35

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

如何将新项目保留在顶部?这看起来很简单,但我的大脑冻结了。

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

LINQ Union - 字符串保持排序

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

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

这适用于Linq-To-Objects如下所述:

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

但它也适用于数据库驱动的 LINQ 提供程序,因为它是Linq-To-SqlLinq-To-Entities,因为UNION ALLUNION的行为类似(前者保持秩序,后者不(。