查询XML时如何在LINQ中添加OR条件?

cyboashu

问题:返回所有记录where Jon Doe =<bus_contact> OR <bus_sponsor>

当前代码返回记录1,那么仅使用一个查询就需要对记录1和2进行哪些修改?

XML格式

<root>
  <row>
    <project_id>1</project_id>
    <project_name>Name1</project_name>
    <bus_contact>Jon Doe</bus_contact>
    <bus_sponsor>Bruce Wayne</bus_sponsor>
  </row>
  <row>
    <project_id>2</project_id>
    <project_name>Name2</project_name>
    <bus_contact>Peter Parker</bus_contact>
    <bus_sponsor>Jon Doe</bus_sponsor>
  </row>
</root>

C#

class Program
{
    static void Main (string[] args)
    {
        XElement main = XElement.Load ("master_list.xml");

        var results = main.Descendants ("row")
            .Descendants ("bus_contact")
            .Where (e => e.Value == "Jon Doe")
            .Select (e => e.Parent)               
            .Select (e => new {
                project_id = e.Descendants ("project_id").FirstOrDefault ().Value,
                project_name = e.Descendants ("project_name").FirstOrDefault ().Value
            });

        foreach (var result in results)
            Console.WriteLine ("{0}, {1}", result.project_id, result.project_name);
        Console.ReadLine ();
    }
}

编辑:这与可能重复的链接中指出的问题不完全相同。是的,它部分地指的是,但是作为初学者,使用公认的答案提供的具有适当上下文的答案非常有帮助。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

||结合Any,就像这样:

var results = main.Descendants("row")
    .Where(r =>
        r.Descendants("bus_contact").Any(c => c.Value == "Jon Doe")
    ||  r.Descendants("bus_sponsor").Any(c => c.Value == "Jon Doe")
    );

使用Any,您可以按条件查询孩子,而无需实际下降到孩子级别。这样就消除了选择爬回树的必要性Parent

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Linq 查询中添加 Where Not Equals 条件

如何在linq中添加条件联接?

如何在选择查询中添加条件?

如何在此查询中添加条件?

如何在查询中添加日期条件?

如何在C#中的Linq聚合中添加条件?

如何在SQL中读取xml时将条件添加到COALESCE

如何在linq内连接中添加小于或等于条件

如何在linq lambda表达式中添加条件

在LINQ查询中添加N个条件?

如何在SQL查询中添加多个AND条件?

如何在MySQL更新查询中添加条件语句?

如何在SQL查询中添加不同的条件语句

如何在SQLite查询的“文本”字段中添加WHERE条件?

如何在mongoose的查询中添加条件过滤器?

如何在动态 sql 查询中添加 where 条件?

如何在不满足条件时从空的 linq 查询值中获取 0,然后将其设置为 ViewBag

如何在Linq查询或Linq查询结果中添加自定义项目

如何在LINQ中查询?

满足条件时如何在列中添加日期+1

如何在条件中添加条件

SQL 查询到 LINQ 如何在 linq 中编写查询

无法弄清楚如何在此LINQ查询中添加where子句

如何在单个linq查询中有条件地添加where子句并过滤子级?

如何在Laravel 6.x中将模型的相关条件添加到雄辩的查询中?

如何在 DAX 查询中添加过去 12 个月的 WHERE 条件

如何在SQL分页查询中的WHERE子句中添加其他条件

如何在MDX查询中添加条件(度量值大于0)

如何在 Yii2 查询生成器的订单条件中添加比较?