Linq查询:不能转换类型IEnumerabletostring()变为(string)

本文关键字:string 变为 tostring IEnumerable 查询 不能 转换 类型 Linq | 更新日期: 2023-09-27 18:13:09

我有一个包含

的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' to 'string'

我需要它是一个集合,这样当我传递回我的List<Project> Manager包含许多经理。

Linq查询:不能转换类型IEnumerable<string>tostring()变为(string)

您希望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()

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

试一下:

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

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

根据您的情况,您可以将它们转换为

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

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

这是Tim在上面所说的。

有可能你得到一个集合,你确定第一个是你需要的。你可以使用:

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

注意:如果在where子句中没有找到集合,可能会抛出错误。在这种情况下使用:

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