我有这个子查询,它是更大查询的一部分。我希望左侧的名为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();
答案 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);