Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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# 字段值相同的输出记录_C#_Linq_Lambda - Fatal编程技术网

C# 字段值相同的输出记录

C# 字段值相同的输出记录,c#,linq,lambda,C#,Linq,Lambda,这个话题可能会有疑问。我在下面的另一个场景中问道,答案是。当我像这样编辑我的主题并再次提问时,德维凯·姆巴·奥卢说我应该在一个新的主题中提问。所以我不得不用一个新的话题来问这个问题 以下是数据架构示例: 我有一个从SQLite数据库获取的列表,如下所示: var decisions = _db.decisions.Where(x => x.CAT_ID == Cat.Id).ToList(); 如果此列表中的REC\u ID字段的值相同,我希望在foreach循环中输出这些记录,并将其

这个话题可能会有疑问。我在下面的另一个场景中问道,答案是。当我像这样编辑我的主题并再次提问时,德维凯·姆巴·奥卢说我应该在一个新的主题中提问。所以我不得不用一个新的话题来问这个问题

以下是数据架构示例:

我有一个从SQLite数据库获取的列表,如下所示:

var decisions = _db.decisions.Where(x => x.CAT_ID == Cat.Id).ToList();
如果此列表中的
REC\u ID
字段的值相同,我希望在foreach循环中输出这些记录,并将其余记录输出到单独的foreach循环。例如,在上面的列表中,
REC\u ID
13个在循环中,
REC\u ID
5个在循环中,
REC\u ID
7个在循环中,其他在最后一个循环中

根据评论编辑:

我想将具有多个相同值的值和剩余值分开。在我们的示例中,应该将ID“
{1,2,3}
{4,5}
{6,7}
{8,9}
分开

我想将具有多个相同值的值和剩余值分开。在我们的示例中,应该将ID“
{1,2,3}
{4,5}
{6,7}
{8,9}
分开

好的,然后您可以根据
REC_ID
进行分组,并检查组的
Count()
是否大于1(给您“多个相同的值”)或等于1(给您“剩余值”),后者必须再次展平,以使它们回到同一集合中

List<IGrouping<int, MyClass>> recIdGroupsMultipleEntries = decisions.GroupBy(x => x.REC_ID)
                                                               .Where(g => g.Count() > 1).ToList();
List<MyClass> recIdSingleEntries = list.GroupBy(x => x.REC_ID)
                                             .Where(g => g.Count() == 1)
                                             .SelectMany(flat => flat).ToList();
List recIdGroupsMultipleEntries=decisions.GroupBy(x=>x.REC_ID)
其中(g=>g.Count()>1.ToList();
List recIdSingleEntries=List.GroupBy(x=>x.REC\u ID)
.其中(g=>g.Count()==1)
.SelectMany(flat=>flat).ToList();
下面是一个示例程序,其输出显示:

void Main()
{
    List<MyClass> list = new List<MyClass>();
    for (int i = 1; i < 10; i++)
    {   
        list.Add(new MyClass { ID = i, TITLE = $"title {i}", CAT_ID = 81});
    }

    list[0].REC_ID = 13;
    list[1].REC_ID = 13;
    list[2].REC_ID = 13;
    list[3].REC_ID = 5;
    list[4].REC_ID = 5;
    list[5].REC_ID = 7;
    list[6].REC_ID = 7;
    list[7].REC_ID = 1;
    list[8].REC_ID = 2;


    List<IGrouping<int, MyClass>> recIdGroupsMultipleEntries = list.GroupBy(x => x.REC_ID).Where(g => g.Count() > 1).ToList();
    List<MyClass> recIdSingleEntries = list.GroupBy(x => x.REC_ID)
                                                                 .Where(g => g.Count() == 1)
                                                                 .SelectMany(flat => flat).ToList();
    
    foreach (var group in recIdGroupsMultipleEntries)
    {
        Console.WriteLine($"REC_ID: {group.Key} || {string.Join(", ", group.Select(x => x.ID))}");  
    }

    Console.WriteLine($"REC_ID: {recIdSingleEntries.Select(x => x.REC_ID).First()} || {string.Join(", ", recIdSingleEntries.Select(x => x.ID))}");

}
void Main()
{
列表=新列表();
对于(int i=1;i<10;i++)
{   
添加(新的MyClass{ID=i,TITLE=$“TITLE{i}”,CAT_ID=81});
}
列表[0]。记录ID=13;
列表[1]。记录ID=13;
列表[2]。记录ID=13;
列表[3]。记录ID=5;
列表[4]。记录ID=5;
列表[5]。记录ID=7;
列表[6]。记录ID=7;
列表[7]。记录ID=1;
列表[8]。记录ID=2;
List recIdGroupsMultipleEntries=List.GroupBy(x=>x.REC_ID).Where(g=>g.Count()>1.ToList();
List recIdSingleEntries=List.GroupBy(x=>x.REC\u ID)
.其中(g=>g.Count()==1)
.SelectMany(flat=>flat).ToList();
foreach(recIdGroupsMultipleEntries中的变量组)
{
Console.WriteLine($“REC_ID:{group.Key}{string.Join(“,”,group.Select(x=>x.ID)));
}
Console.WriteLine($“REC_ID:{recIdSingleEntries.Select(x=>x.REC_ID).First()}|{string.Join(“,”,recIdSingleEntries.Select(x=>x.ID)));
}
输出:

记录ID:13 | | 1、2、3
记录ID:5 | | 4,5
记录ID:7 | 6,7
记录ID:1 | | 8,9


所以基本上你想分离所有不同的
REC\u ID
值?我理解正确了吗?@MongZhu-没有。我想将那些具有多个相同值的值和剩余值分开。在我们的示例中,应该将ID“
{1,2,3}
{4,5}
{6,7}
{8,9}
分开。因为它们都有相同的CAT_ID。这正是我的代码所做的。我将编辑它,并添加一个带有输出的示例程序,以向您展示我现在更了解您了,我想:)您希望剩余部分在单个列表中展平。我做了第二次编辑,展示了如何将分组展平。有一个look@MongZhu-非常感谢。我正在尝试,我会让你知道结果。非常感谢你的完美解决方案。