2010-08-17 68 views
1

我是.net(C#,asp.net)中LINQ to XML的新手。我想了解更多关于Lambda表达式的知识。我正在使用以下查询使用Lambada表达式。如何使用lambda表达式将参数传递给LINQ to XML查询?

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

你能告诉我怎么Lambda表达式工作特别是在参数的情况下(在上述情况下,& B)? Lambda表达式中参数的基本概念是什么?我们可以使用在查询之外定义的变量的名称而不是& b吗?在上述情况下代表哪一个元素&?我们可以在查询中传递来自外部的参数吗?如果我们可以从外部查询传递参数,那么它将如何完成?如果你给我任何其他的例子而不是上面的查询来理解Lambda表达式中的参数的概念,那么它也会帮助我很多。

回答

1

基本的概念是,您在XElement的值序列上调用Where - 因此lambda表达式会执行多次,值为a作为“当前”XElement。 lambda表达式则表示该XElement是否应包含在结果中。

对于SelectMany调用,这实际上是将一系列序列展平 - 从一个XElement开始,产生一系列所有ABC后代元素。

这是真的只是LINQ到对象 - 它只是LINQ to XML非常适合LINQ to Objects。

+0

我们可以使用任何其他参数名称或变量名称(在我们的代码之外的代码中声明)而不是代表当前XElement的&b吗? – 2010-08-17 14:30:32

+0

@Shailesh:是的,你可以使用其他变量。变量将被lambda表达式捕获。 – 2010-08-17 14:34:44