繁体   English   中英

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

[英]LINQ - Return rows with all columns of a table based on multiple distinct columns

我有桌子

**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

基于上述情况,我希望返回所有列,但基于列的DISTINCT ROWS-物料编号和客户编号。即,我需要看到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();

尝试这个:

DataTable result = dt.AsEnumerable()
                     .GroupBy(x => x.Field<int>("COLUMN NAME"))
                     .Select(x => x.First()).CopyToDataTable();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM