Linq查询:无法将类型IEnumerable <string>转换为字符串更改.ToString()到(字符串)</string>

时间:2013-05-12 21:39:43

标签: c# linq

我有一个包含

的linq查询
select new Project()
           {                             
               Manager =  list.Employee.Select(x => x.Manager).ToString()
           }).ToList();

这个汇编,但我最终得不到数据...... 我为System.Linq.Enumerable+WhereSelectListIterator<Flex.Data.Systems,System.String>的“经理”获得了价值 所以我想我会更改为(string)而不是.ToString(),但这不起作用

select new Project()
           {                             
               Manager =  (string)list.Employee.Select(x => x.Manager)
           }).ToList();

给我错误信息

  
    

无法将'System.Collections.Generic.IEnumerable'类型转换为'string'

  

4 个答案:

答案 0 :(得分:10)

您希望Manager是什么,string以逗号分隔的值列表或List<string> / String[]

的字符串:

Manager =  string.Join(",",list.Employee.Select(x => x.Manager))

系列:

Manager =   list.Employee.Select(x => x.Manager).ToList()
// or
Manager =   list.Employee.Select(x => x.Manager).ToArray()

答案 1 :(得分:6)

问题是list.Employee.Select(x => x.Manager)返回管理器集合,属性Manager是字符串(?)。你需要一些你想要的经理。例如,附加.First()以获取集合中的第一个。

答案 2 :(得分:0)

试试这个对我有用:

 var returnCollection = (from manager in list.Employee 
     select manager).ToList();

答案 3 :(得分:0)

无论何时从集合中选择列,都会返回一个集合。即使您指定了where子句以匹配确切的记录。

对于您的情况,可以将它们转换为

Manager =   list.Employee.Select(x => x.Manager).ToList()

Manager =   list.Employee.Select(x => x.Manager).ToArray()

这是蒂姆在上面所说的。

在某些情况下,您会得到一个收藏,并且您确定第一个收藏是您所需要的。为此,您可以始终使用:

Manager =   list.Employee.Select(x => x.Manager).First();

注意:如果未找到与使用where子句一起作为集合的内容,则可能会引发错误。在这种情况下,请使用:

Manager =   list.Employee.Select(x => x.Manager).FirstOrDefault();

即使返回匹配结果,也不会出错。