【问题标题】:How to pass parameters to LINQ to XML query by using lambda expression?如何使用 lambda 表达式将参数传递给 LINQ to XML 查询?
【发布时间】:2010-08-17 14:06:42
【问题描述】:

我是 .net(C#,asp.net)中 LINQ to XML 的新手。我想了解更多关于 Lambda 表达式的信息。我正在使用带有以下查询的 Lambada 表达式。

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

您能否告诉我 Lambda 表达式在参数情况下的特殊工作方式(在上述情况下为 a 和 b)? Lambda 表达式中参数的基本概念是什么?我们可以使用在查询之外定义的变量的名称而不是 a & b 吗?在上述情况下,a 和 b 代表哪些元素?我们可以在查询中从外部传递参数吗?如果我们可以从外部查询传递参数,那么它将如何完成?如果您给我任何其他示例而不是上面的查询来理解 Lambda 表达式中参数的概念,那么它也会对我有很大帮助。

【问题讨论】:

    标签: c# asp.net linq linq-to-xml lambda


    【解决方案1】:

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

    对于 SelectMany 调用,这实际上是对序列序列进行展平 - 从一个 XElement 开始,您将生成一个包含所有 ABC 后代元素的序列。

    真的只是 LINQ to Objects - 只是 LINQ to XML 与 LINQ to Objects 非常吻合。

    【讨论】:

    • 我们可以使用任何其他参数名称或变量名称(在查询之外的代码中声明)而不是代表当前 XElement 的 a & b 吗?
    • @Shailesh:是的,您可以使用其他变量。变量将被 lambda 表达式捕获。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多