0

サブlinqクエリをグループ化できるようにしたいのですが、LinqPadは次の行でエラーを出します。

ratetocharge =rtc.rate.Sum

エラーは次のとおりです。メソッドグループを匿名タイプのプロパティに割り当てることができません。

料金表に料金の合計を表示するために、その行に何を入力する必要があるかを誰かにアドバイスしてもらえますか?

ありがとうございました、

マーク

var mtgRooms = RoomUnit
        .Where(r => r.building_id==1)
        .GroupBy(p => p.Type)
        .Select(g => new
            {
            TypeName = g.Key.type_name,
            TypeID = g.Key.type_id,
            TypeCount = g.Count(),
            rates = rates

        .Select (  rtc => 
                 new  
                 {
                    occ = rtc.occ, 
                    ratetocharge =rtc.rate.Sum  // this is the line which errors
                 }
                   )
                .GroupBy(pe => pe.occ)
             }
            );

            mtgRooms.Dump();

編集:さらに詳細を追加するには

テーブル:

テーブルルームユニット

type_id (key - int)
type_name (string - eg. large room, small room, medium room)
building_id (int - denotes a number of buildings this room could be within)

料金

rate_id
type_id (foreign key to RoomUnit)
occ (type of rate - ie. Desk, FullRoom)

アイデアは、次のようなモデルを提供したいということです。

Type of Room
Number of Types of Room available
Type of Occ/Desks available
Sum of Rate (rate to charge) for each type of desk

現在表示されているものは次のとおりです。

LargeRoom, Type 3049, Type Count 18 (or whatever is available)
    occ FullRoom, ratetocharge 250, numOfOcc 1
    occ FullRoom, ratetocharge 250, numOfOcc 1
    occ FullRoom, ratetocharge 250, numOfOcc 1
    occ Single Desk, ratetocharge 45, numOfOcc 1
    occ Single Desk, ratetocharge 45, numOfOcc 1

SmallRoom, Type 3093, Type Count 4 (or whatever is available)
    occ FullRoom, ratetocharge 150, numOfOcc 1
    occ FullRoom, ratetocharge 150, numOfOcc 1
    occ Single Desk, ratetocharge 45, numOfOcc 1
    occ Single Desk, ratetocharge 45, numOfOcc 1
    occ Single Desk, ratetocharge 45, numOfOcc 1

モデルにサブテーブルのOccによるrateToChargeを合計したいのに対し、例:

LargeRoom, Type 3049, Type Count 18 (or whatever is available)
    occ FullRoom, ratetocharge 750, numOfOcc 3
    occ Single Desk, ratetocharge 90, numOfOcc 2

SmallRoom, Type 3093, Type Count 4 (or whatever is available)
    occ FullRoom, ratetocharge 300, numOfOcc 2
    occ Single Desk, ratetocharge 135, numOfOcc 3
4

1 に答える 1

2

に変更ratetocharge =rtc.rate.Sumratetocharge =rtc.rate.Sum()ます。コンパイラを使用Sumすると、ratetocharge 変数にメソッド グループを割り当てようとしていると考えられます。メソッドのメソッドのセット (オーバーロードを含む) SumSum()代わりに、実際にメソッドを呼び出す呼び出しを行う必要があります。

--- 編集 --- あなたのさらなる情報を見て、私はこれを実装する方法として行きます

var mtgRooms = RoomUnit
.Where(r => r.building_id==1)
.GroupBy(p => p.Type)
.Select(g => new
    {
    TypeName = g.Key.type_name,
    TypeID = g.Key.type_id,
    TypeCount = g.Count(),
    rates = Rates.Where(rt => rt.type_id == g.type_id).GroupBy(rt => rt.occ)
            .Select(proj => new  {
                occ = proj.Key,
                ratetocharge = proj.Sum(s => s.rate),
                numOfOcc = proj.count())                    
            })              
     }
);
于 2012-08-09T11:34:30.327 に答える