我有以下问题-我想计算一个字段在我的数据库中基于一个简单的查询和划分。首先是关于我的数据库结构的一些信息:
|WorkingUnits|-1---------n-|Materials|
e. WU与Materials的一对多关系。
这是两个表以及它们之间的关系。在WorkingUnits表中,我有一个名为WUAmount的计算字段。此外,每个工作单元都有一个"价格"。同样的道理也适用于材料——每一种材料都有一个"价格"。最后,我想实现的是将分配给特定工作单元的所有材料的价格加起来,并将其除以工作单元本身的价格。
到目前为止,我想做的是:
partial void WUAmount_Compute(ref decimal result)
{
//decimal amount = 0;
IDataServiceQueryable<WorkingUnit> query;
query = from WorkingUnit in this.DataWorkspace.ApplicationData.WorkingUnits
where WorkingUnit.Materials != null
select WorkingUnit;
foreach (WorkingUnit detail in query)
{
result = this.WUPrice / (result + detail.Materials.Sum(s => s.Price).Value);
}
}
但是我得到一个内部异常:
Cannot compare elements of type 'System.Data.Objects.DataClasses.EntityCollection`1'.
Only primitive types, enumeration types and entity types are supported.
我对Lightswitch和LINQ相当陌生,还不能理解这一点。任何帮助都是感激的。
如果我没理解错的话,你只需要:
partial void WUAmount_Compute(ref decimal result)
{
result = (this.Materials.Sum(x => x.Price) / this.WUPrice);
}