2012-01-26 9 views
1

私の質問は2と同じで、以前の質問LINQ - メソッド構文

LINQ TO DataSet: Multiple group by on a data tableを頼まれ、この質問との唯一の違いは、私はメソッド構文でそれを行う必要があるということです。

LINQ Group By Multiple fields -Syntax help - この質問との違いは、LINQ-to-DataSetを使用してこれを行う必要があることです。我々はこれを行うにはどうすればよい

COUNTRYCODE  CUSTOMERNAME 
    USA    Microsoft 
    USA    IBM 
    CAN    RIM 
    CAN    Tim Horton 
    GER    BMW 

私は以下のように(予想)結果と、国によってグループに顧客をしようとしていますか?ありがとうございました。

EDIT:

ここで私が苦労してる汚いコードです。完全を期すために

var query = orders.AsEnumerable() 
        .GroupBy(t => new {CountryCode= t.Field<string>("CountryCode"), 
             CustomerName = t.Field<string>("CustomerName"), 
            (key, group)=> new {Key1 = key.CountryCode, Key2=key.CustomerName}) 
        .Select(t => new {t.Key1, t.Key2}); 
+1

をあなたが何を意味するのか「と次のような結果(期待)?結果は国によってグループ化されていません。 –

+0

私は言っておくべきです、 "(国+顧客)によってグループ化"申し訳ありません。 – FMFF

+0

すでにLinq to DataSetの例と、拡張メソッド構文の例があります。あなたはそれらを組み合わせなければなりません...他に何が必要ですか? –

答えて

0

コードが働いた:

var query = orders.AsEnumerable() 
       .GroupBy(t => new {CountryCode= t.Field<string>("CountryCode"), 
           CustomerName=t.Field<string>("CustomerName"), 
          (key, group)=> new {CountryCode = key.CountryCode,CustomerName=key.CustomerName}) 
.Select(t => new {t.CountryCode, t.CustomerName}); 
1
var uniqueCountryCustomer = 
     tblCustomer.AsEnumerable() 
     .GroupBy(row => new 
     { 
      Country = (string)row["COUNTRYCODE"], 
      Customer = (string)row["CUSTOMERNAME"] 
     }); 

、ここでのクエリ構文は次のとおりです。私のEDITで

var uniqueCountryCustomer = 
      from row in tblCustomer.AsEnumerable() 
      group row by new{ 
       Country=(string)row["COUNTRYCODE"], 
       Customer=(string)row["CUSTOMERNAME"] 
      }; 

// display result 
var summary = from cc in uniqueCountryCustomer 
       select string.Format("Country:{0} Customer:{1} Count:{2}", 
       cc.Key.Country, 
       cc.Key.Customer, 
       cc.Count()); 
MessageBox.Show(string.Join(Environment.NewLine,summary)); 
+1

ところで、OPは具体的には、クエリの理解構文ではなくメソッドの構文を要求しました... –

+0

@Thomas:メソッドの構文を読みましたが、わかりやすいクエリです。 'intoグループ 'を削除しました。通常はVB.NETでコーディングしていますので、これは私のC#トレーニングの副作用です;) –

関連する問題