C# 查找列表中只存在一次的项

C# 查找列表中只存在一次的项,c#,C#,我有一个List类型的变量,我试图在列表中查找唯一的项目,即它们只出现一次 示例:var data=newlist{1,1,5,2,2,7}() 预期输出:5,7只需分组,然后选择计数位置1: var uniqueList = data.GroupBy(x => x).Where(x => x.Count() == 1).Select(x => x.Key).ToList(); 只需分组,然后选择计数为1: var uniqueList = data.GroupBy(x =&

我有一个
List
类型的变量,我试图在列表中查找唯一的项目,即它们只出现一次

示例:
var data=newlist{1,1,5,2,2,7}()

预期输出:
5,7
只需分组,然后选择计数位置
1

var uniqueList = data.GroupBy(x => x).Where(x => x.Count() == 1).Select(x => x.Key).ToList();

只需分组,然后选择计数为
1

var uniqueList = data.GroupBy(x => x).Where(x => x.Count() == 1).Select(x => x.Key).ToList();

您可能希望尝试以下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));
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
公共课程
{
公共静态void Main()
{
var数据=新列表(新int[]{1,1,5,2,2,7});
变量输出=数据。选择((值,索引)=>new{value,index})
其中(a=>data.Count(b=>a.value==b)==1)
.选择(a=>a.值)
.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));
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
公共课程
{
公共静态void Main()
{
var数据=新列表(新int[]{1,1,5,2,2,7});
变量输出=数据。选择((值,索引)=>new{value,index})
其中(a=>data.Count(b=>a.value==b)==1)
.选择(a=>a.索引)
.ToList();
output.ForEach(o=>System.Console.WriteLine(o));
}
}

您可能希望尝试以下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));
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
公共课程
{
公共静态void Main()
{
var数据=新列表(新int[]{1,1,5,2,2,7});
变量输出=数据。选择((值,索引)=>new{value,index})
其中(a=>data.Count(b=>a.value==b)==1)
.选择(a=>a.值)
.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));
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
公共课程
{
公共静态void Main()
{
var数据=新列表(新int[]{1,1,5,2,2,7});
变量输出=数据。选择((值,索引)=>new{value,index})
其中(a=>data.Count(b=>a.value==b)==1)
.选择(a=>a.索引)
.ToList();
output.ForEach(o=>System.Console.WriteLine(o));
}
}

您也可以使用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);
}
var listA=新列表{1,1,5,2,2,7};
var listB=来自listA.GroupBy(x=>x)中的g,其中g.Count()==1选择g.First();
foreach(列表B中的var项)
{
控制台写入线(项目);
}

您也可以使用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);
}
var listA=新列表{1,1,5,2,2,7};
var listB=来自listA.GroupBy(x=>x)中的g,其中g.Count()==1选择g.First();
foreach(列表B中的var项)
{
控制台写入线(项目);
}

示例:var data=newlist(){1,1,5,2,2,7};示例:var data=newlist(){1,1,5,2,2,7};请注意,这有一个二次运行时,因为它将枚举每个项目的列表(计数)。我完全同意@pokeNote的说法,这有一个二次运行时,因为它将枚举每个项目的列表(计数)。我完全同意@poke的说法