Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:选择在列表中只出现一次的元素_C#_Linq - Fatal编程技术网

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这是几年前的事了,我不记得当时我在做什么;很抱歉