2012-05-11 4 views
-2

は、私は私が私のリストにデシリアライズすることができます項目のリストを含むXMLファイル持って、私はデータをロードした後のデータに基づいて、ネストLINQクエリ

[Serializable()] 
    public class cls_item 
    { 
     #region enum 
     public enum itemtype 
     { 
     cash, 
     credit, 
     check 
     } 
     #endregion 

     #region properties 
     public DateTime Date { get; set; } 
     public itemtype Type { get; set; } 
     public double Value { get; set; } 
     #endregion 
    } 

を受け、I次のように表示されたツリーを構築するために、ネストされたLINQクエリをしたい:

 
--2005 
|--January 
    |-- 01/01/2005 
    |-- 01/10/2005 
|--March 
    |-- 03/05/2005 
--2010 
|--January 
    |-- 01/01/2010 
    |-- 01/10/2010 
|--March 
    |-- 03/05/2010 
... 

私は私が望む結果を得るために、私のデータにできる最善かつ最速のLINQクエリでしょうか?

私は次のことを試してみました:D に新しい{月= p.Date.Month、年= p.Date.Year}によってdata.items 基Pのpから=グループ化

varが新しいを選択{dt = string.Format( "{0}/{1}"、d.Key.month、d.Key.year)、count = d.Count()};

しかし、別のheiarchyやデータが必要なので、ネストされたLinqクエリを生成するための助けが必要ですか?このような

+2

ようこそスタックオーバーフローに!これをやろうとしている特定の問題について具体的な質問がありますか?私はFAQ項目をチェックすることをお勧めします。[どのような種類の質問がここにありますか?](http://stackoverflow.com/faq#questions) –

+0

または短いバージョン:何を試しましたか? – BrokenGlass

答えて

1

何かが正しい方向にあなたを置くかもしれません:

var result = from d in myList 
      group d by d.Date.Year into g 
      select new 
       { 
        Year = g.Key, 
        Months = g.GroupBy (x => x.Date.Month) 
         .Select (x => new {Month=x.Key, Dates=x.Select (y => y.Date)}) 
       }; 
+0

実際の日付階層については、DISTINCT()をどこに追加すればよいでしょうか?同じ日に複数の項目があるため、Distinctを追加するだけです。 – phamtv

+0

最後の行に 'Dates = x.Select(y => y.Date)'を追加します。 'Dates = x.Select(y => y.Date).Distinct()'になります。 – Robaticus