不能将Y上的X属性设置为'Decimal'价值.必须将此属性设置为'Single'类型的
本文关键字:设置 属性 Single 类型 价值 不能 上的 Decimal | 更新日期: 2023-09-27 18:17:12
所以我有这个相当复杂的LINQ查询:
// This query will get the top 10 items sold.
IEnumerable<IGrouping<Item, ItemSale>> results = (
from x in database.ItemSales
where shiftIDs.Contains(x.shiftID)
group x by x.item into itemSalesGroup
orderby itemSalesGroup.Sum(y => y.SalesValue) descending
select itemSalesGroup
).Take(10);
它在y。salesvalue上崩溃了说它不能设置为十进制值。我该如何解决这个问题?我尝试了以下操作:
orderby itemGroup.Sum(y => (float?)y.SalesValue) ?? 0f descending
orderby itemGroup.Sum(y => (float?)y.SalesValue ?? 0f) descending
下面是相关的Entity-Framework Code First定义:
[Table("ItemSales")]
public class ItemSale {
public int ID { get; set; }
[Column("ItemID")]
public int itemID { get; set; }
[ForeignKey("itemID")]
public Item item { get; set; }
[Column("Shifts_ID")]
public int shiftID { get; set; }
[ForeignKey("shiftID")]
public Shift shift { get; set; }
...
public float SalesValue { get; set; }
}
Enumerable的表达式参数。Sum不能返回浮点数。因为它可以处理单精度、小数、双精度等,所以它不知道隐式地将其转换为哪一种类型。你必须显式地强制转换它
试试这个
orderby itemSalesGroup.Sum(y => (single) (y.SalesValue)) descending
在你的实体中,你有十进制类型,你从SQL返回单一类型。更新你的SQL查询(更好)或你的实体