连接List中的值

时间:2013-12-31 03:29:53

标签: c# linq

我有DTO包含DeliveryNote列表,客户列表。每份交货单都包含报价单,以便每个交货单都有多个报价单。但只有同一个客户。客户参考仅在报价中。

我需要选择查询,如报价单中的发货单日期,编号和参考,用逗号分隔(如果是多个)。

我写下面的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)
               };

但是我不知道如何连接引用并检索客户名称

请指导我哪种方法更好,两种方法之间有什么区别

1 个答案:

答案 0 :(得分:0)

你在“中提到的问题,但是我需要一些提示,例如我的未处理案例,如果没有可用的报价,如何处理,以及单个语言适用时如何避免使用逗号”,已经String.Join方法处理得很好。您可以通过以下快速测试来证明:

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);