2009-06-10 18 views
3

私は単一のテーブルを持っており、単一のテーブルに基づいて複数のネストされたオブジェクトを構築する必要があります。Linqクエリ、単一テーブルからネストされたオブジェクトを構築する方法

データ:

PointA PointB月時間価格 1 2 11 11:00 10.99 1 2 12 11:00 9.99

オブジェクト

POINTS {PointA、PointB、詳細} あります詳細{Month、ExtraDetails} ExtraDetails {Time、Price}

ループとif文の読み込みを避けたいので、linq これをする。私のlinqの経験を超えています。

編集:これらもグループ化する必要があります。

助けがあれば大丈夫です。

おかげで、あなたのクラスは、あなたが言及したオブジェクトに対して定義された、とあなたはポイントのリストを返すLINQクエリを持っている可能性が1行でオブジェクトを作成properyできるように、コンストラクタやプロパティを持っていましたと仮定

答えて

3

ちょうど試してみたソリューションを適切に検証可能なクエリを記述することはできません。

var nestedObjects = from row in data 
    select new {row.PointA, row.PointB, Details = new { 
     row.Month, ExtraDetails = new { 
      row.Time, row.Price 
     } 
    }}; 

のThあなたは既にあなたのデータをデータに持っていることを前提としています。

によって


グループあなたが一緒にグループにポイントをしたい場合は、「グループ化」を必要とする:

var nestedObjects = from row in data 
    group row by new { row.PointA, row.PointB } into Points 
    select new { 
     Points = Points.Key, 
     Details = from details in Points 
      select new { row.Month, ExtraDetails = new { 
       row.Time, row.Price 
      }} 
    }; 

もう少し複雑な - もちろん、あなたがグループ化するかもしれません月ごとにも同様ですが、その場合はPointsビットと同じパターンに従う必要があります。これはテーブルを作成しないことに注意してください。なぜなら、グループbyはそれほどのことはしませんが、少なくともあなたのための構造を作成するからです。

0

このリク何か行く場合:最後の解像度で

var res = 
    from item in table.AsEnumerable() 
    select new Points(){PointA = item["PointA"]; 
          PointB = item["PointB"]; 
          Details = from item2 in table.AsEnumberable() 
            where item["PointA"] = item2["PointA"] and item["PointB"] = item2["PointB"] 
            select new Details(){ 
                  month=item2["month"], 
                  extraDetails = from item3 in table.AsEnumerable()... 
                 } 
         }; 

がポイント

のIEnumerableをされます、私はコードのため申し訳ありませんが、私はそうは.NET 3.5を持つコンピュータではないです私は

+0

したがって、詳細オブジェクトはポイントオブジェクトの内部に入りますか?また、このグループはポイントをまとめて繰り返しはないでしょうか? –

+0

あなたの質問を本当に理解しました。 Unfourtunately私は、入れ子にされたlinqクエリをrequrireしないsoltionの知らない。私はそのようなものに自分のコードを更新します。 – AlexDrenea

関連する問題