我的问题与之前提出的两个问题相同
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
我们怎么做?谢谢。
编辑:
这是我正在努力解决的混乱代码。
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});
答案 0 :(得分:1)
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));
答案 1 :(得分: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});