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
包含许多经理。
您希望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();