如何在 c# 中添加特定条件项后对特定元素进行分组 linq to sql

Posted

技术标签:

【中文标题】如何在 c# 中添加特定条件项后对特定元素进行分组 linq to sql【英文标题】:How to group certain element then after add item of specific criteria doing linq to sql in c# 【发布时间】:2020-05-07 10:18:04 【问题描述】:

这似乎是一个愚蠢的问题,但我真的需要帮助。我不经常发布问题,但这次我真的很有帮助。

我需要一个 linq to sql 查询来分组多个列。但不仅如此,其中一列还需要根据certain condition 进行分组。

我的查询是这个。

using (var donnée = new ClassDonnéeDataContext(mycontrng))
        
            var don = from d in donnée.Reservations
                      where (d.Date_Livraison.Value.Date == startDate.Value.Date) && d.Sortie_Cuisine != "Oui" && d.Livraison != "Annulée" && (d.Reserv_Boutique == "Non" || d.Reserv_Boutique == null)
                      group d by new
                      
                          Gateau = d.Gateau,
                          Heure = d.Heure_Livraison,
                          Nb_Part = d.Part,
                       into grs
                      select new
                      
                          Gateau = grs.Key.Gateau,
                          Heure = grs.Key.Heure,
                          Nombre = grs.Sum(x => x.Nombre),
                          Nb_Part = grs.Key.Nb_Part,
                      ;

            var order = from ord in don
                        orderby ord.Heure ascending
                        select ord;

            dgv.DataSource = order;
         

我正在寻找的结果是将 "Heure_Livraison" 列按特定条件分组。

查询结果如下。

Gateau:                               Heure:                 Nombre:                  Nb_Part:

Foret Noire                           10                     2                        6
Ganache                               10                     2                        6
Foret Noire                           11                     2                        6
Ganache                               11                     2                        6
Ganache                               12                     1                        6

现在我想添加所有同名的蛋糕,相同的Nb_Part Between 10-12. 所以结果会喜欢

Gateau:                               Heure:                 Nombre:                  Nb_Part:

Foret Noire                           10                     4                        6
Ganache                               10                     5                        6

如果有人对这个问题有建议,请给我!!!``

【问题讨论】:

您的结果未显示分组。当源组将具有 1011 时,您如何将 Heure 变为 10?当所有Nb_Part 都是6 时,Nb_Part 在 10 到 12 之间有什么相关性? 感谢您对@NetMage 的评论,但我没有将 Heure 设为 10,这是想要获得的结果。 Nb_Part 全部为 6,因为它们最终为 6,因此查询将显示所有 Nb_part 为 6。它正在对它们进行分组。我希望查询同时影响 Heure 和 Nombre。 是的,但是为什么Foret NoireHeure等于1011,分组的结果是10 @NetMage 其实这是我的期望,你有什么建议? 我知道这是您的期望,但是什么逻辑导致10被选中?为什么分组结果11中没有答案? 【参考方案1】:

我最终通过创建一个单独的列并指定要存储在该列中的数据来解决问题,以便在查询后我只需要选择该列。

感谢您的评论!

【讨论】:

以上是关于如何在 c# 中添加特定条件项后对特定元素进行分组 linq to sql的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用特定的 INNER JOIN 查询和条件制作 Crystal Report

如何在 C# 中获取特定 id 的最长时间和按 id 分组

如果仅在 MongoDB 中满足特定条件,则分组

根据特定条件添加Xelement c#

使用 LINQ - C# 在 xml 文件中的特定节点下方添加新元素

如何在 C# 中删除 Json 特定元素?