Что не так с этим запросом LINQ? - PullRequest
1 голос
/ 26 мая 2011

Я пытаюсь написать запрос LINQ для двух объектов (SPListItemCollection и List<SPListItem>).

Когда мой запрос похож на приведенный ниже, он работает нормально:

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?

Ответы [ 2 ]

6 голосов
/ 26 мая 2011

Во второй версии вам нужно немного изменить синтаксис, чтобы получить анонимный тип с 2 свойствами: n и ParentID.

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

Если это не то, что вам нужно, уточните в вопросе.

0 голосов
/ 26 мая 2011

Ваш последний запрос должен быть таким

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 };
...