C#中从项目列表获取唯一值

4

我有一个列表:

list = { 1,1,1,2,3,3,3,4,4,5,6,6,6}

现在我想提取唯一值列表。

最终的列表仅包含{2,5}

如何通过LINQ或任何其他函数实现?


3
我稍微挑剔一下,但我认为你会发现{2,5}是一个包含独特值的列表,而不是非独特的值。 - paxdiablo
我有点困惑,但是2和5是唯一的值。不是吗?o0只有一个2和一个5...你到底想要实现什么? - Dmytro
3个回答

10

一种方法是使用GroupBy方法并仅过滤计数为1的内容:

var unique = list.GroupBy(l => l)
                 .Where(g => g.Count() == 1)
                 .Select(g => g.Key);

0
尝试这个:
List<int> list = new List<int>(new int[]{ 1, 1, 1, 2, 3, 3, 3, 4, 4, 5, 6, 6, 6});
List<int> unique=new List<int>();
int count=0;
bool dupFlag = false;
for (int i = 0; i < list.Count; i++)
{
count = 0;
dupFlag = false;
for(int j=0;j<list.Count;j++)
{
    if (i == j)
    continue;

    if (list[i].Equals(list[j]))
    {
    count++;
    if (count >= 1)
    {
        dupFlag = true;
        break;
    }
    }

}
if (!dupFlag)
    unique.Add(list[i]);
}

0

尝试这段代码:

var lstUnique =
    from t1 in list
    group t1 by t1 into Gr
    where Gr.Count() == 1
    select Gr.Key;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接