0

我有一个类型变量,List<int>我试图找到列表中唯一的项目——即它们只出现一次。

示例:var data = new List<int>{1, 1, 5, 2, 2, 7}();
预期输出:5,7

4

3 回答 3

3

只需分组,然后选择计数所在的位置1

var uniqueList = data.GroupBy(x => x).Where(x => x.Count() == 1).Select(x => x.Key).ToList();
于 2018-09-23T12:22:47.247 回答
1

您可能想试试这个 LINQ 语句:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var data = new List<int>(new int[] { 1, 1, 5, 2, 2 , 7 });
        var output = data.Select((value, index) => new {value, index})
                                .Where(a => data.Count(b => a.value == b) == 1)
                                .Select(a => a.value)
                                .ToList();

        output.ForEach(o => System.Console.WriteLine(o));
    }
}

如果您仍在寻找索引,您可能想试试这个:

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var data = new List<int>(new int[] { 1, 1, 5, 2, 2 , 7 });
        var output = data.Select((value, index) => new {value, index})
                                .Where(a => data.Count(b => a.value == b) == 1)
                                .Select(a => a.index)
                                .ToList();

        output.ForEach(o => System.Console.WriteLine(o));
    }
}
于 2018-09-23T12:27:35.370 回答
0

你也可以使用 Linq,

var listA = new List<int> {1, 1, 5, 2, 2 , 7};
var listB = from g in listA.GroupBy(x => x)  where g.Count() == 1  select g.First();
foreach (var item in listB)
{
   Console.WriteLine(item);
}

DOTNET FIDDLE

于 2018-09-23T12:29:27.687 回答