0

次の問題があります。単純なクエリと除算に基づいて、データベース内のフィールドを計算したいと考えています。私のデータベース構造に関する最初の情報:

|WorkingUnits|-1---------n-|Materials| ei WU と材料の間の 1 対多の関係。

これは、2 つのテーブルとそれらの間の関係です。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 にかなり慣れていないので、まだ理解できません。どんな助けでも大歓迎です。

4

1 に答える 1

2

私があなたを正しく理解していれば、必要なのは次のとおりです。

partial void WUAmount_Compute(ref decimal result)
{
   result = (this.Materials.Sum(x => x.Price) / this.WUPrice);
}
于 2013-01-18T15:23:11.357 に答える