不能隐式转换类型 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)
});
我对堆栈溢出做了很多研究,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)
});