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