来自C#中项目列表的非唯一值

时间:2014-02-17 06:02:16

标签: c# .net visual-studio-2010

我有一个清单

  

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

现在我想要一个非唯一值列表

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

如何通过LINQ或任何其他功能来实现。

3 个答案:

答案 0 :(得分:10)

一种方法是使用GroupBy方法并仅过滤那些计数为1的那些。

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

答案 1 :(得分: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]);
}

答案 2 :(得分:0)

试试这段代码:

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