Как передать параметры в запрос LINQ to XML с помощью лямбда-выражения? - PullRequest
1 голос
/ 17 августа 2010

Я новичок в LINQ to XML в .net (C #, asp.net).Я хочу знать больше о лямбда-выражениях.Я использую выражение Lambada со следующим запросом.

count = FieldRoot.Element("USER").Element("MM")
            .Descendants("MMMS")
            .Where(a => a.Attribute("ID").Value == MID)
            .SelectMany(b => b.Descendants("ABC")).Count();

Подскажите, пожалуйста, как работает лямбда-выражение специально для параметров (в приведенном выше случае a & b)?Какова основная концепция параметров в лямбда-выражении?Можем ли мы использовать имена переменных, определенных вне запроса, вместо a & b?какие элементы a & b представляют в представленном выше случае?Можем ли мы передать параметры извне в запросе?Если мы можем передать параметры из внешнего запроса, то как это будет сделано?Если вместо приведенного выше запроса вы приведете какой-либо другой пример, чтобы понять концепцию параметра в лямбда-выражении, то это также очень мне поможет.

1 Ответ

1 голос
/ 17 августа 2010

Основная концепция заключается в том, что вы вызываете Where для последовательности XElement значений, поэтому лямбда-выражение выполняется несколько раз, а значение a используется в качестве "текущего" XElement. Затем лямбда-выражение говорит, должен ли этот XElement быть включен в результаты.

Для вызова SelectMany это фактически сглаживает последовательность последовательностей - из одного XElement вы получаете последовательность всех элементов-потомков ABC.

Это на самом деле просто LINQ to Objects - просто LINQ to XML очень точно вписывается в LINQ to Objects.

...