我遇到了Linq查询的问题。基本上我有以下,取自LinqPad,它按日期和文本字段(类型)分组,并给我结果。问题是,对于每个日期,我需要具有总值,以及"蓝色"的百分比。与总价值相比时。
var t = (from p in Orders where (p.Type == "Blue" || p.Metric == "Red" || p.Metric == "White")
&& p.OrderDate>= new DateTime(2014,8,26,0,0,0)
orderby p.OrderDate, p.Type
group p by new { p.OrderDate, p.Type} into gd
select new {OrderDate = gd.Key.OrderDate, Type= gd.Key.Type, Value = gd.Sum(x => x.Value)}).ToList().Dump();
因此,如果我有3行,如下所示,我需要返回一行:
我追求的结果是:
" 0.2"是"蓝"的百分比单个日期的条目。当然,如果有多个日期,我每个日期需要1行: - )
这是我的头脑,因此任何指针都将受到赞赏。像往常一样,我首先在谷歌上搜索,但经过几次尝试后才决定提问。
谢谢!
答案 0 :(得分:0)
尝试在一个查询中执行此操作非常困难!我建议你创建两个不同的集合,一个用于你拥有的集合,然后另一个集合按日期分组,无论颜色如何。
接下来我会按日期加入两套。
如有必要,我会做一个例子。
答案 1 :(得分:0)
非常确定你必须做Join
才能得到你想要的东西,因为我们在技术上处理两组数据,一组仅由OrderDate
分组的数据集,以及一个按{分组的数据集{1}}和OrderDate
。
请注意,这一点都不整齐......所以请谨慎使用,我也希望对此类代码进行详细评论,因为它完全不可读。
Type