我有以下类(class)
public class InvoiceRO
{
public int ID{ get; set; }
public string Address { get; set; }
public string Reference1 { get; set; }
public string DNNumber { get; set; }
public string QuotationNumber { get; set; }
}
这里我有数据如下
ID Address Reference1 DNNumber QuotationNumber
----------------------------------------------------------
1 add1 ref1 d001 q001
2 add1 ref1 d001 q002
3 add1 ref1 d002 q003
我只需要一行作为输出,因此前 2 列值将相等并且仅得到一个,最后 2 列将连接并检索为逗号分隔值。最终输出将是
ID Address Reference1 DNNumber QuotationNumber
----------------------------------------------------------
1 add1 ref1 d001, d002 q001, q002, q003
如何在 LINQ 中进行这样的分组?
最佳答案
您可以使用GroupBy
,然后使用String.Join
连接字符串:
invoices.GroupBy(i => new {i.Address, i.Reference1})
.Select(g => new InvoiceRO {
ID = g.First().ID,
Address = g.Key.Address,
Reference1 = g.Key.Reference1,
DNNumber = string.Join(", ", g.Select(i => i.DNNumber)),
QuotationNumber = string.Join(", ", g.Select(i => i.QuotationNumber))
}
关于c# - 在 LINQ 中对相似列进行分组并连接其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21094188/