如何在 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
如果有人对这个问题有建议,请给我!!!``
【问题讨论】:
您的结果未显示分组。当源组将具有10
和 11
时,您如何将 Heure
变为 10
?当所有Nb_Part
都是6
时,Nb_Part
在 10 到 12 之间有什么相关性?
感谢您对@NetMage 的评论,但我没有将 Heure 设为 10,这是想要获得的结果。 Nb_Part 全部为 6,因为它们最终为 6,因此查询将显示所有 Nb_part 为 6。它正在对它们进行分组。我希望查询同时影响 Heure 和 Nombre。
是的,但是为什么Foret Noire
Heure
等于10
和11
,分组的结果是10
?
@NetMage 其实这是我的期望,你有什么建议?
我知道这是您的期望,但是什么逻辑导致10
被选中?为什么分组结果11
中没有答案?
【参考方案1】:
我最终通过创建一个单独的列并指定要存储在该列中的数据来解决问题,以便在查询后我只需要选择该列。
感谢您的评论!
【讨论】:
以上是关于如何在 c# 中添加特定条件项后对特定元素进行分组 linq to sql的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中使用特定的 INNER JOIN 查询和条件制作 Crystal Report