Linq组由返回总是值

本文关键字:返回 Linq | 更新日期: 2023-09-27 17:49:20

我有这个小代码,我想返回Today和计数总是有或没有值。

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

Linq组由返回总是值

不是很优雅,但是您可以使用带有默认值的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)
             });