如何将列表中的项连接到LINQ中的逗号分隔字符串

时间:2014-08-11 15:47:11

标签: c# sql linq

我有这个子查询,它是更大查询的一部分。我希望左侧的名为ErrorType的列由右侧List返回的逗号分隔值集填充。我该怎么做 ? ErrorTypes是一个主服务器,其Key是ErrorTypeID,Value是ErrorTypeName。 ProductionErrors是事务表,其键是生产ID(由外部查询提供),其匹配键是ErrorType。

ErrorType =  (from errorType in db.ErrorTypes 
              join prdErrType in db.ProductionErrors 
              on errorType.ErrorTypeID equals prdErrType.ErrorTypeID
              where prdErrType.ProductionID==prd.ProductionID
              select errorType.ErrorTypeName).ToList();

3 个答案:

答案 0 :(得分:3)

在这种情况下使用string.Join可能更好:

ErrorType = string.Join(",", (from...)); // you can omit .ToList() perhaps

答案 1 :(得分:0)

你应该查询类似::

的内容
ErrorType =  (from errorType in db.ErrorTypes join prdErrType in db.ProductionErrors on errorType.ErrorTypeID equals prdErrType.ErrorTypeID
                                              where prdErrType.ProductionID==prd.ProductionID
                                              select new 
                                              {
                                               ErrorType=errorType.ErrorTypeName.tostring()+','
                                               }).ToList()

这是因为有时LINQ to SQL不支持字符串函数。

答案 2 :(得分:0)

string.Join是我这样做的方式,就像已经给出的答案一样。但与大多数事情一样,有多种方法可以做到这一点。另一种方法是使用IEnumerable<T>.Aggregate方法:

var query = (from errorType in db.ErrorTypes 
             join prdErrType in db.ProductionErrors 
             on errorType.ErrorTypeID equals prdErrType.ErrorTypeID
             where prdErrType.ProductionID==prd.ProductionID
             select errorType.ErrorTypeName);

string errorType = query.Aggregate((result,next) => result + "," + next);