return new List<string> { newItem }.Union(currentList.Take(9));
如何将newItem保持在最顶层?这看起来很简单,但我的大脑已冻结。
它自然地对字符串进行排序,这意味着我的newItem可以出现在列表中的任何位置。我currentList.Remove(newItem);
只是因为它已经在那里了。
答案 0 :(得分:3)
尝试使用Concat
代替Union
,前者应该保留顺序,而后者是一个集合方法,可以删除重复项并且不保证任何顺序:
return new List<string> { newItem }.Concat(currentList.Take(9));
这适用于Linq-To-Objects
here:
枚举此方法返回的对象时,Union 按顺序枚举第一个和第二个,并产生每个元素 还没有屈服。
但它也适用于数据库驱动的LINQ提供程序Linq-To-Sql
或Linq-To-Entities
,因为UNION ALL
和UNION
行为相似(前者保持顺序,后者不行)。< / p>