Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq按唯一值对对象进行分组,并创建两个列表_C#_Linq - Fatal编程技术网

C# Linq按唯一值对对象进行分组,并创建两个列表

C# Linq按唯一值对对象进行分组,并创建两个列表,c#,linq,C#,Linq,我有一个包含属性号的对象数组。我需要按值对它们进行分组,即对象包含这些样本值: 1 2 3 3 3 4 5 6 6 6 7 7 我必须这样对他们进行分组: listOfUniqe = {1,2,4,5} listOfDuplicates1 = {3,3,3} listOfDuplicates2 = {6,6,6} listOfDuplicates3 = {7,7} ... 我尝试使用distinct和First()。但这会区分第一次出现的情况并删除重复的情况。我还想删除第一次出现的对象,如果

我有一个包含属性号的对象数组。我需要按值对它们进行分组,即对象包含这些样本值:

1 2 3 3 3 4 5 6 6 6 7 7
我必须这样对他们进行分组:

listOfUniqe = {1,2,4,5}
listOfDuplicates1 = {3,3,3}
listOfDuplicates2 = {6,6,6}
listOfDuplicates3 = {7,7}
...
我尝试使用distinct和
First()
。但这会区分第一次出现的情况并删除重复的情况。我还想删除第一次出现的对象,如果它有重复项,并将它们移动到另一个列表中

List<Reports> distinct = new List<Reports>;
distinct = ArrayOfObjects.GroupBy(p => p.Number).Select(g => g.First()).ToList();
List distinct=新列表;
distinct=ArrayOfObjects.GroupBy(p=>p.Number)。选择(g=>g.First()).ToList();

有没有办法做到这一点?

要获得只包含一个元素的组,请使用:

distinct = ArrayOfObjects.GroupBy(p => p.Number)
                         .Where(g => g.Count() == 1)
                         .ToList();
nonDistinct = ArrayOfObjects.GroupBy(p => p.Number)
                            .Where(g => g.Count() > 1)
                            .Select(g => g.ToList())
                            .ToList();
要获取包含更多元素的组列表,请使用:

distinct = ArrayOfObjects.GroupBy(p => p.Number)
                         .Where(g => g.Count() == 1)
                         .ToList();
nonDistinct = ArrayOfObjects.GroupBy(p => p.Number)
                            .Where(g => g.Count() > 1)
                            .Select(g => g.ToList())
                            .ToList();

要获取仅包含一个元素的组,请使用:

distinct = ArrayOfObjects.GroupBy(p => p.Number)
                         .Where(g => g.Count() == 1)
                         .ToList();
nonDistinct = ArrayOfObjects.GroupBy(p => p.Number)
                            .Where(g => g.Count() > 1)
                            .Select(g => g.ToList())
                            .ToList();
要获取包含更多元素的组列表,请使用:

distinct = ArrayOfObjects.GroupBy(p => p.Number)
                         .Where(g => g.Count() == 1)
                         .ToList();
nonDistinct = ArrayOfObjects.GroupBy(p => p.Number)
                            .Where(g => g.Count() > 1)
                            .Select(g => g.ToList())
                            .ToList();
首先将项目分组:

var groups = values.GroupBy(p => p.Number).ToList();
唯一的是组计数为1的组:

var unique = groups.Where(g => g.Count() == 1).Select(g => g.Single()).ToList();
有重复项的是其他项:

var nonUnique = groups.Where(g => g.Count() > 1).ToList();
首先将项目分组:

var groups = values.GroupBy(p => p.Number).ToList();
唯一的是组计数为1的组:

var unique = groups.Where(g => g.Count() == 1).Select(g => g.Single()).ToList();
有重复项的是其他项:

var nonUnique = groups.Where(g => g.Count() > 1).ToList();