C# LINQ:选择在列表中只出现一次的元素
我有一个对象列表,可以是任何类型的C# LINQ:选择在列表中只出现一次的元素,c#,linq,C#,Linq,我有一个对象列表,可以是任何类型的T 如何使用linq选择仅在该列表中出现一次的对象列表?例如,如果我的列表是 {2,3,4,5,8,2,3,5,4,2,3,4,6},那么输出应该是{6,8}使用Count()函数 int[] a = {2,3,4,5,8,2,3,5,4,2,3,4,6}; var selection = from i in a where (a.Count(n => n == i) == 1) select i; 你可
T
如何使用linq选择仅在该列表中出现一次的对象列表?例如,如果我的列表是
{2,3,4,5,8,2,3,5,4,2,3,4,6}
,那么输出应该是{6,8}
使用Count()函数
int[] a = {2,3,4,5,8,2,3,5,4,2,3,4,6};
var selection = from i in a
where (a.Count(n => n == i) == 1)
select i;
你可以试试这个:
int[] arr = { 2, 3, 4, 5, 8, 2, 3, 5, 4, 2, 3, 4, 6 };
var q =
from g in arr.GroupBy(x => x)
where g.Count() == 1
select g.First();
不必计算它们,只需确保它们是唯一的
int[] arr = { 2, 3, 4, 5, 8, 2, 3, 5, 4, 2, 3, 4, 6 };
var unique = arr.Where((n, index) => !arr.Take(index).Contains(n) && !arr.Skip(index+1).Contains(n));
但是,您需要有一种方法来测试泛型
T
的相等性。“答案很好,”尼克拉森,你能举个例子吗?有趣。@nawfal这是几年前的事了,我不记得当时我在做什么;很抱歉