这个LINQ查询有什么问题?

Abe*_*ler 1 .net linq linq-to-objects

我正在尝试针对两个对象(SPListItemCollectionList<SPListItem>)编写LINQ查询.

当我的查询类似于下面的查询时它工作正常:

var licFirst = from n in navList.Items.Cast<SPListItem>()
               from z in licZeroth
               where ((SPFieldLookupValueCollection)n["Parent"]).Select(t=>t.LookupId).Contains(z.ID)
               select n;
Run Code Online (Sandbox Code Playgroud)

当我向select中添加一个项目时:

var licFirst = from n in navList.Items.Cast<SPListItem>()
               from z in licZeroth
               where ((SPFieldLookupValueCollection)n["Parent"]).Select(t=>t.LookupId).Contains(z.ID)
               select n, ParentId = z.ID;
Run Code Online (Sandbox Code Playgroud)

它开始出错:

名称"z"在当前上下文中不存在

我该如何选择z.ID

Ant*_*ram 6

在第二个版本中,您需要稍微更改语法以获得具有2个属性的匿名类型,即nParentID.

select new { n, ParentID = z.ID }; 
Run Code Online (Sandbox Code Playgroud)

如果这不是您想要的,请在问题中澄清.