我有一个包含
的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'
答案 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();
即使返回匹配结果,也不会出错。