我有一个如下的场景。其实我得到了预期的结果。但需要避免在一个领域重复。LINQ中避免重复
我有一个自定义类来显示我的报告中的记录。像下面的类:
public class MyData
{
public int ID;
public string InvoiceNumber;
public string DeliveryNoteNumber;
public string QuotationNumber;
}
这里的流量为 1.报价详情 2.交货细节。单一交货单可以有多个报价 3.发票明细。这里单张发票可以有多个发货单。
因此,当我的发票报告中,我需要显示该发票的所有交货单需要以逗号分隔的标签显示。像所有报价需要以逗号分隔显示。
这里我有一个问题。我在一份交货单中有多个报价单,并将交货单添加到一张发票中。所以在报告中,我可以使用逗号分隔引号,但传送说明也重复。我用组加入到组的数据和代码和示例以下
List<MyData> data = new List<MyData>();
MyData d1 = new MyData();
d1.ID = 1;
d1.InvoiceNumber = "Inv001";
d1.DeliveryNoteNumber = "DN001";
d1.QuotationNumber = "Q001";
data.Add(d1);
MyData d2 = new MyData();
d2.ID = 1;
d2.InvoiceNumber = "Inv001";
d2.DeliveryNoteNumber = "DN001";
d2.QuotationNumber = "Q002";
data.Add(d2);
var source = data.GroupBy(i => new { i.ID, i.InvoiceNumber })
.Select(g => new MyData
{
ID = g.First().ID,
InvoiceNumber = g.Key.InvoiceNumber,
DeliveryNoteNumber = string.Join(", ", g.Select(i => i.DeliveryNoteNumber)),
QuotationNumber = string.Join(", ", g.Select(i => i.QuotationNumber)),
});
label1.Text = source.FirstOrDefault().DeliveryNoteNumber;
label2.Text = source.FirstOrDefault().QuotationNumber;
输出在文本框下面:
Text1Result = DN001, DN001
Text2Result = Q001, Q002
这里第一个文本框是问题所在。请给出解决这个问题的想法。或者我需要更改存储过程以适应此。我的自定义类(MyData)从sp填充(这里我只是硬编码)。使用加入报价表,交货单表和发票表创建的sp
有没有什么办法可以压缩这一点,所有这些其他细节让你的问题难以理解。 –
对不起,我会阅读格式提示。 – Akhil