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

C# 如何在LINQ中将列表中的项目连接到逗号分隔的字符串中,c#,sql,linq,C#,Sql,Linq,我有一个子查询,它是一个较大查询的一部分。我希望左侧名为ErrorType的列由右侧列表返回的逗号分隔的值集填充。我怎么做?ErrorTypes是一个主键为ErrorTypeID,值为ErrorTypeName的主机。ProductionErrors是其键为Production ID(由外部查询提供)且其匹配键为ErrorType的事务表 ErrorType = (from errorType in db.ErrorTypes join prdErrType in

我有一个子查询,它是一个较大查询的一部分。我希望左侧名为ErrorType的列由右侧列表返回的逗号分隔的值集填充。我怎么做?ErrorTypes是一个主键为ErrorTypeID,值为ErrorTypeName的主机。ProductionErrors是其键为Production 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();
在这种情况下,最好使用:

ErrorType = string.Join(",", (from...)); // you can omit .ToList() perhaps
在这种情况下,最好使用:

ErrorType = string.Join(",", (from...)); // you can omit .ToList() perhaps
在这种情况下,最好使用:

ErrorType = string.Join(",", (from...)); // you can omit .ToList() perhaps
在这种情况下,最好使用:

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

您应该查询如下内容:

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不支持字符串函数。

您应该查询如下内容:

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不支持字符串函数。

您应该查询如下内容:

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不支持字符串函数。

您应该查询如下内容:

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不支持字符串函数。

string.Join
是我这样做的方式,正如前面给出的答案一样。但与大多数事情一样,有多种方法可以做到这一点。另一种方法是使用
IEnumerable.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);

string.Join
是我这样做的方式,正如已经给出的答案一样。但与大多数事情一样,有多种方法可以做到这一点。另一种方法是使用
IEnumerable.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);

string.Join
是我这样做的方式,正如已经给出的答案一样。但与大多数事情一样,有多种方法可以做到这一点。另一种方法是使用
IEnumerable.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);

string.Join
是我这样做的方式,正如已经给出的答案一样。但与大多数事情一样,有多种方法可以做到这一点。另一种方法是使用
IEnumerable.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);

谢谢你的帮助,虽然这不是礼节的一部分。你的众多答案中有一个对我很有帮助,问题是这只是LINQ查询中众多任务中的一个。因此,鉴于我有限的LINQ,我无法突破上述格式。所以其中一个答案就解决了。谢谢你的帮助,尽管这不是礼节的一部分。你的众多答案中有一个对我很有帮助,问题是这只是LINQ查询中众多任务中的一个。因此,鉴于我有限的LINQ,我无法突破上述格式。所以其中一个答案就解决了。谢谢你的帮助,尽管这不是礼节的一部分。你的众多答案中有一个对我很有帮助,问题是这只是LINQ查询中众多任务中的一个。因此,鉴于我有限的LINQ,我无法突破上述格式。所以其中一个答案就解决了。谢谢你的帮助,尽管这不是礼节的一部分。你的众多答案中有一个对我很有帮助,问题是这只是LINQ查询中众多任务中的一个。因此,鉴于我有限的LINQ,我无法突破上述格式。其中一个答案是正确的。我应该提到ErrorType是一个字符串。你的答案可能有用,但我使用了字符串作为输出变量。我应该提到ErrorType是一个字符串。你的答案可能有用,但我使用了字符串作为输出变量。我应该提到ErrorType是一个字符串。你的答案可能有用,但我使用了字符串作为输出变量。我应该提到ErrorType是一个字符串。你的答案应该是有效的,但我使用了字符串作为输出变量。