Linq集团获得总体比例

时间:2014-09-25 02:05:49

标签: c# linq linq-to-entities

我遇到了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行,如下所示,我需要返回一行:

  1. 2014-08-28," Blue",30
  2. 2014-08-28," Red",25
  3. 2014-08-28," White",95
  4. 我追求的结果是:

    1. 2014-08-28," Blue",0.2
    2. " 0.2"是"蓝"的百分比单个日期的条目。当然,如果有多个日期,我每个日期需要1行: - )

      这是我的头脑,因此任何指针都将受到赞赏。像往常一样,我首先在谷歌上搜索,但经过几次尝试后才决定提问。

      谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在一个查询中执行此操作非常困难!我建议你创建两个不同的集合,一个用于你拥有的集合,然后另一个集合按日期分组,无论颜色如何。

接下来我会按日期加入两套。

如有必要,我会做一个例子。

答案 1 :(得分:0)

非常确定你必须做Join才能得到你想要的东西,因为我们在技术上处理两组数据,一组仅由OrderDate分组的数据集,以及一个按{分组的数据集{1}}和OrderDate

请注意,这一点都不整齐......所以请谨慎使用,我也希望对此类代码进行详细评论,因为它完全不可读。

Type