6

我有一个 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”转换为“字符串”

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

4

4 回答 4

11

你想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()
于 2013-05-12T21:43:24.810 回答
7

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

于 2013-05-12T21:42:40.527 回答
0

试试这个对我有用:

 var returnCollection = (from manager in list.Employee 
     select manager).ToList();
于 2015-01-06T21:01:54.027 回答
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();

即使返回匹配的注释,这也不会出错。

于 2020-03-18T20:36:06.557 回答