2011-05-25 127 views
1

我想写两个对象的LINQ查询(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; 

当我添加一个项目选择:

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; 

它开始出错了:

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

如何选择z.ID

+0

您的意思是'选择新{的OBJ = N,的ParentId = z.ID}'? – 2011-05-25 20:14:38

+0

你有没有试过选择新{n,ParentId = z.ID} – 2011-05-25 20:14:47

回答

6

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

select new { n, ParentID = z.ID }; 

如果这不是你想要的,请澄清的问题。

0

您的最终查询应该是这样的一个

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 new { n, ParentId = z.ID };