不能隐式转换类型 decimal?到 OrdersList,你是否缺少演员表

Cannot implicitly convert type decimal? to OrdersList, are you missing a cast

我对堆栈溢出做了很多研究,none 的答案对我有帮助,我有以下代码

public IEnumerable<OrdersList> GetOrdersList(string code)
{
    return Repository.Find<OrdersList>(x => x.ProductTitle != "" && x.Code == code);
}

它工作得很好,但现在因为我在我的 MSSQL 2014 数据库中有一个正在使用我的多个函数的视图,我不能在那个视图中做很多事情,所以我必须用 LINQ 做一些转换,我需要什么就是过滤掉价格最高的订单,然后按照ProductTitle和Code进行分组。

我拥有的数据:

当我尝试以下 LINQ 语法时:

public IEnumerable<OrdersList> GetOrdersList(string code)
{
    return Repository.Find<OrdersList>(x => x.ProductTitle != "" && x.Code == code)
                     .GroupBy(x => x.MaxPrice);
}

它立即给我以下错误:

Cannot implicitly convert type decimal? to OrdersList, are you missing a cast

我在想的是,在我执行 GroupBy 之后 returns 我只有 MaxPrice 作为单个记录,这就是它给我错误的原因,我需要实现的是:

我尝试添加 GroupBy(x => x.MaxPrice).Select(s => s),它在设计时仍然抛出相同的错误,欢迎任何关于如何实现我的结果的意见,提前谢谢你。

Entity Framework 生成的模型:

class OrdersList
{
    public decimal? MaxPrice { get; set; }
    public string? Supplier { get; set; }
    public string ProductTitle { get; set; }
    public string? Code { get; set; }
}

如果您想在具有相同标题和代码的订单中查找最高价格:

from o in orders
where o.Supplier != null &&
      o.ProductTitle != null &&
      o.Code != null &&
      o.MaxPrice != null
group o by new { o.ProductTitle, o.Code } into g
select new
{
    ProductTitle = g.Key.ProductTitle,
    Code = g.Key.Code,
    MaxPrice = g.Max(x => x.MaxPrice)
};

扩展方法链看起来像这样:

orders.Where(o => o.Supplier != null &&
                  o.ProductTitle != null &&
                  o.Code != null &&
                  o.MaxPrice != null)
      .GroupBy(g => new { o.ProductTitle, o.Code })
      .Select(g => new
          {
              ProductTitle = g.Key.ProductTitle,
              Code = g.Key.Code,
              MaxPrice = g.Max(x => x.MaxPrice)
          });