LINQ:选择仅在列表中出现一次的元素

时间:2010-04-06 11:25:32

标签: c# linq

我有一个对象列表,可以是任何类型T

如何使用linq选择仅在该列表中出现一次的对象列表?例如,如果我的列表是 {2,3,4,5,8,2,3,5,4,2,3,4,6},然后输出应为{6,8}

3 个答案:

答案 0 :(得分:7)

你可以试试这个:

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();

答案 1 :(得分:3)

使用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;

答案 2 :(得分:0)

没有必要统计它们,你只需要确保它们是独一无二的。

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));