эквивалентное лямбда-выражение для этого выражения запроса - PullRequest
1 голос
/ 08 октября 2010

По сообщению Выберите элемент с заданным атрибутом, используя linq to xml , что будет эквивалентным лямбда-выражением.

Приведенное ниже решение отлично работает

var artistsAndImage = from a in feed.Descendants("artist")
                      from img in a.Elements("image")
                      where img.Attribute("size").Value == "big"
                      select new { Name = a.Element("Name").Value
                                 , Image = img.Value};

Iпопробовал лямбда-выражение, но оно не работает :-( может кто-нибудь предложить эквивалентное лямбда-выражение.

1 Ответ

2 голосов
/ 08 октября 2010

Sure:

var artistsAndImage = feed.Descendants("artist")
                          .SelectMany(a => a.Elements("image"),
                                      (a, img) => new { a, img })
                          .Where(z => z.img.Attribute("size").Value == "big")
                          .Select(z => new { Name = z.a.Element("Name").Value,
                                             Image = z.img.Value });

(Не проверено, но я думаю, что это должно работать.)

Сложность в том, что второе предложение from вызывает SelectMany и вводит прозрачный идентификатор , который я сделал несколько менее прозрачным, назвав его z.

Есть ли какая-то конкретная причина, по которой вы хотите избежать синтаксиса выражений запросов? В этом примере это проще - я просто использую то, что проще для запроса, который я пишу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...