Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ通过多列对数据集进行分组-方法语法_C#_Linq_.net 4.0_Linq To Dataset - Fatal编程技术网

C# LINQ通过多列对数据集进行分组-方法语法

C# LINQ通过多列对数据集进行分组-方法语法,c#,linq,.net-4.0,linq-to-dataset,C#,Linq,.net 4.0,Linq To Dataset,我的问题与之前提出的两个问题相同 ,这个问题唯一的区别是,我需要用方法语法来解决这个问题。 及 -这个问题的不同之处在于,我需要使用LINQ to DataSet来完成此操作 我尝试按国家对客户进行分组,结果(预期)如下: COUNTRYCODE CUSTOMERNAME USA Microsoft USA IBM CAN RIM CAN Tim Horto

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

,这个问题唯一的区别是,我需要用方法语法来解决这个问题。

-这个问题的不同之处在于,我需要使用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 query=orders.AsEnumerable()
.GroupBy(t=>new{CountryCode=t.Field(“CountryCode”),
CustomerName=t.Field(“CustomerName”),
(key,group)=>new{Key1=key.CountryCode,Key2=key.CustomerName})
.Select(t=>new{t.Key1,t.Key2});
为完整起见,以下是查询语法:

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

“我的编辑”中的代码有效:

 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}); 
var query=orders.AsEnumerable()
.GroupBy(t=>new{CountryCode=t.Field(“CountryCode”),
CustomerName=t.Field(“CustomerName”),
(key,group)=>new{CountryCode=key.CountryCode,CustomerName=key.CustomerName})
.Select(t=>new{t.CountryCode,t.CustomerName});

你说“结果(预期)如下”是什么意思?结果不是按国家分组的。我应该说,“按(国家+客户)分组”抱歉。您已经有了一个Linq to DATASE示例和一个扩展方法语法示例。您只需将它们组合起来……您还需要什么?@FMFF:您还应该添加一些示例数据,而不仅仅是预期的结果。顺便说一句,OP专门要求方法语法,而不是查询理解语法…@Thomas:我是说d方法语法,但理解查询,抱歉。将
删除到组中
。通常在VB.NET中进行编码,因此这是我的C#培训的附带损害。)
 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});