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

本文关键字:何元素 元素 包含任 LINQ | 更新日期: 2023-09-27 17:58:04

我正在动态构建一个查询,从以下内容开始:

var items = db.Items;

case "4":
items = items.OrderBy(x => x.Ratings.Average(t => t.score)).ThenBy(x => x.title);

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

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

如果您使用此表单:

var effectiveFloor = 
   policies
   .Where(p => p.PricingStrategy == PricingStrategy.EstablishFloor)
   .Max(p => p.Amount);

那么解决方案是:

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

在此处找到

   items = items.Where(x=>x.Ratings.Any()).
           OrderBy(x => x.Ratings.Average(t => t.score)).
           ThenBy(x => x.title);

试试看。