我有DeliveryNote列表,客户列表组成的DTO。每张交货单包含报价列表,因此每张交货单都有多个报价。但只有一个客户。客户参考仅在报价中提供。
我需要在报价列表中选择查询,如交货单日期、编号和引用,用逗号分隔(如果有多个)。
我像下面这样写LINQ
var source = from A in _deliveryNote.DeliveryNoteList
select new
{
A.ID,
A.Date,
A.Number,
Reference = String.Join(", ", from item in A.Quotations select item.Reference),
CustomerName = (A.Quotations != null ? _deliveryNote.CustomerList.Find(x => x.ID == A.Quotations.First().CustomerID).Name : string.Empty)
};这很好用。但我需要一些技巧,比如我未处理的情况,比如如果没有可用的引号,如何处理它,以及当单个wuotation适用时,如何避免逗号。
我还得到了一些其他类型的查询,如下图所示。
var source = from A in _deliveryNote.DeliveryNoteList from B in A.Quotations
select new
{
A.ID,
A.Date,
A.Number,
//Reference = String.Join(", ", from item in A.Quotations select item.Reference),
//CustomerName = (A.Quotations != null ? _deliveryNote.CustomerList.Find(x => x.ID == A.Quotations.First().CustomerID).Name : string.Empty) //_deliveryNote.CustomerList.Find(x => x.ID == C.CustomerID).Name : String.Empty)
};但在这里,我不知道如何连接引用和检索客户名称
请告诉我哪种方法更好,两种方法的区别是什么?
发布于 2013-12-31 12:27:47
String.Join方法已经很好地处理了你在“但我需要一些技巧,比如我的未处理的情况下,如果没有可用的引号,它是如何处理的,以及当单个wuotation适用时如何避免逗号”中提到的问题。您可以通过执行以下快速测试来证明这一点:
var data = new List<string>();
var str = String.Join(", ", data);
//you'll get empty string here
Console.WriteLine(str);
data.Add("test 1");
str = String.Join(", ", data);
//you'll get "test 1" here, no unnecessary comma appended
Console.WriteLine(str);https://stackoverflow.com/questions/20851284
复制相似问题