Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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 - Fatal编程技术网

C# LINQ-基于多个不同的列返回表中所有列的行

C# LINQ-基于多个不同的列返回表中所有列的行,c#,linq,C#,Linq,我有一张桌子 **Matter No Client No Client Name Invoice No Invoice Date Invoice Amt** 1111-0001 1111 ABC 101 01/01/2013 100.00 1111-0001 1111 ABC 102 02/01/2013

我有一张桌子

**Matter No      Client No    Client Name  Invoice No  Invoice Date    Invoice Amt**

1111-0001          1111          ABC            101       01/01/2013       100.00 
1111-0001          1111          ABC            102       02/01/2013       200.00
1111-0001          1111          ABC            103       03/01/2013       300.00
1111-0001          1111          ABC            104       04/01/2013       400.00
1111-0001          1112          DEF            105       05/01/2013       500.00
1111-0001          1113          GHI            106       06/01/2013       600.00
基于上述场景,我希望返回所有列,但不返回基于列的不同行-无论是否和客户端号。即,我需要将3行作为输出:

**Matter No      Client No    Client Name  Invoice No  Invoice Date    Invoice Amt**

1111-0001          1111          ABC            101       01/01/2013       100.00 
1111-0001          1112          DEF            105       05/01/2013       500.00
1111-0001          1113          GHI            106       06/01/2013       600.00
我如何在LINQ实现这一点

提前谢谢

from x in table
group x by new {x.MatterNo, x.ClientNo}
into mygroup
select mygroup.First();
或者如果您喜欢这种语法

list.DistinctBy(x => new {x.MatterNo, x.ClientNo});
如果你没有处理列表,你可以试试

from DataRow drow in dtable.Rows
group drow by new {MatterNo = drow["Matter No"], ClientNo = drow["Client No"]}
into myGroup
select myGroup.First();
或者如果您喜欢这种语法

list.DistinctBy(x => new {x.MatterNo, x.ClientNo});
如果你没有处理列表,你可以试试

from DataRow drow in dtable.Rows
group drow by new {MatterNo = drow["Matter No"], ClientNo = drow["Client No"]}
into myGroup
select myGroup.First();
试试这个:

DataTable result = dt.AsEnumerable()
                     .GroupBy(x => x.Field<int>("COLUMN NAME"))
                     .Select(x => x.First()).CopyToDataTable();
DataTable结果=dt.AsEnumerable()
.GroupBy(x=>x.Field(“列名”))
.Select(x=>x.First()).CopyToDataTable();
试试这个:

DataTable result = dt.AsEnumerable()
                     .GroupBy(x => x.Field<int>("COLUMN NAME"))
                     .Select(x => x.First()).CopyToDataTable();
DataTable结果=dt.AsEnumerable()
.GroupBy(x=>x.Field(“列名”))
.Select(x=>x.First()).CopyToDataTable();

Dó你有一些c#代码来回答你的问题吗?:-)你试过什么?Dó你有一些c#代码来回答你的问题吗?:-)您尝试过什么?谢谢,但列名是[Matter No]和[Client No]。上述查询无法识别x.matterno和x.clientNo。它说System.Data.DataRow不包含x的定义。MatterNo@prafullashimpi我改了,最后一个例子让你更接近了吗?goup->group?错别字,我又是汉克斯了。现在,我收到一个错误“无效的匿名类型成员声明程序。必须使用成员分配、简单名称或成员访问权限声明匿名类型成员。”对于语句{drow[“Matter No”]、drow[“Client No”]}。我向组中添加了缺少的“r”。因为它不是创建匿名类型的有效语法。Try:new{MatterNo=drow[“MatterNo”],ClientNo=drow[“Client No”]}谢谢,但列名是[MatterNo]和[Client No]。上述查询无法识别x.matterno和x.clientNo。它说System.Data.DataRow不包含x的定义。MatterNo@prafullashimpi我改了,最后一个例子让你更接近了吗?goup->group?错别字,我又是汉克斯了。现在,我收到一个错误“无效的匿名类型成员声明程序。必须使用成员分配、简单名称或成员访问权限声明匿名类型成员。”对于语句{drow[“Matter No”]、drow[“Client No”]}。我向组中添加了缺少的“r”。因为它不是创建匿名类型的有效语法。Try:new{MatterNo=drow[“无事”],ClientNo=drow[“无客户”]}