LINQ聚合序列不包含任何元素

The*_*Man 6 c# linq-to-sql

我正在动态构建一个以下开头的查询:

var items = db.Items;
Run Code Online (Sandbox Code Playgroud)

...

case "4":
items = items.OrderBy(x => x.Ratings.Average(t => t.score)).ThenBy(x => x.title);
Run Code Online (Sandbox Code Playgroud)

问题是有些项目在评级表中还没有任何数据,所以我认为它试图对不存在的数据进行平均.DefaultOrEmpty()在最后使用似乎没有任何影响.关于我如何解决这个问题的任何建议?

DSh*_*ook 13

如果您使用此表格:

var effectiveFloor = 
   policies
   .Where(p => p.PricingStrategy == PricingStrategy.EstablishFloor)
   .Max(p => p.Amount);
Run Code Online (Sandbox Code Playgroud)

然后解决方案是:

var effectiveFloor = 
    policies
    .Where(p => p.PricingStrategy == PricingStrategy.EstablishFloor)
    .DefaultIfEmpty()
    .Max(p => p==null ? 0 : p.Amount);
Run Code Online (Sandbox Code Playgroud)

这里找到


AD.*_*Net 7

   items = items.Where(x=>x.Ratings.Any()).
           OrderBy(x => x.Ratings.Average(t => t.score)).
           ThenBy(x => x.title);
Run Code Online (Sandbox Code Playgroud)

试试吧.

  • Nick和AD.Net是同一个人!/ ReputationConspiracyTheory (2认同)