"集合初始化程序的最佳重载Add方法'System.Collections.Generic.List.Add(System.Guid)'具有一些无效参数"

dgr*_*ant 1 .net c# linq

List<PageInfo> subPages = new List<PageInfo>();
// ...
// some code to populate subPages here...
// ...
List<Guid> subPageGuids = new List<Guid> {from x in subPages select x.Id}; //doesn't work
Run Code Online (Sandbox Code Playgroud)

PageInfo有一个ID字段,类型为Guid.所以x.Id是一个System.Guid.

上面第二行代码不起作用......我收到错误:

集合初始化程序的最佳重载Add方法'System.Collections.Generic.List.Add(System.Guid)'有一些无效的参数

参数'1':无法从'System.Collections.Generic.IEnumerable'转换为'System.Guid'

我只用C#编写了大约一个星期,但我之前做过类似的模式,从来没有遇到过这个问题.

Awe*_*own 8

我想你想要:

List<Guid> subPageGuids = new List<Guid>(from x in subPages select x.Id);
Run Code Online (Sandbox Code Playgroud)

(注意花括号改为常规括号)

这将调用List的构造函数,该构造函数将IEnumerable(这是linq查询返回的内容)作为参数.现在,您正在尝试使用对象初始值设定项的语法.