Linq集团总是通过返回值

时间:2014-03-10 11:11:52

标签: c# linq

我有这个小代码,我想回到今天,并且总是计算是否值。

DateRange dateRangeLastWeek = DateRange.LastWeek(DateTime.Now);

var caseCounts = db.Find(x => x.FinishDate.HasValue)
                .Where(c => c.FinishDate.Value.Date == dateRangeLastWeek.Today.Date || 
                (c.FinishDate.Value.Date >= dateRangeLastWeek.Start && c.FinishDate.Value.Date <= dateRangeLastWeek.End))
                .GroupBy(c => c.FinishDate.Value.Date == dateRangeLastWeek.Today.Date ? "Today" : "Last Week")
                .Select(g => new JsonChartModel
                {
                      Name = g.Key,
                      Value = g.Count() 
                });

在这种情况下,我想回来:

  • 今天:10
  • 上周:0

1 个答案:

答案 0 :(得分:1)

不是很优雅,但您可以使用具有默认值的Union,并选择默认值和返回值之间的最大值。

var defaultValues = new List<JsonChartModel> {
   new JsonChartModel{Name = "Today", Value = 0},
   new JsonChartModel{Name = "Last Week", Value = 0}
};

var result = <YourQuery>.ToList().Union(defaultValues)
             .GroupBy(m => m.Name)
             .Select(g => new JsonChartModel) {
                Name = g.Key,
                Value = g.Max(x => x.Value)
             });