LINQ to DataSet Group By Multiple Columns-方法语法

本文关键字:Columns- 方法 语法 Multiple By to DataSet Group LINQ | 更新日期: 2023-09-27 18:21:29

我的问题与之前提出的两个问题相同

LINQ TO DataSet:在一个数据表上进行多重分组,这个问题的唯一区别是我需要用方法语法来完成

LINQ Group By Multiple fields-语法帮助-与此问题的区别在于,我需要使用LINQ to DataSet来完成此操作。

我正在尝试按国家/地区对客户进行分组,结果(预期)如下:

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

我们该怎么做?非常感谢。

编辑:

这是我正在努力解决的混乱代码。

   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});

LINQ to DataSet Group By Multiple Columns-方法语法

var uniqueCountryCustomer =
         tblCustomer.AsEnumerable()
        .GroupBy(row => new
        {
            Country = (string)row["COUNTRYCODE"],
            Customer = (string)row["CUSTOMERNAME"]
        });

为了完整起见,以下是查询语法:

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));

EDIT中的代码有效:

 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});