如何使用 Linq to SQL 使用搜索条件搜索一组节点?

发布于 2024-09-25 19:07:08 字数 1140 浏览 2 评论 0原文

我有这个 XML

<?xml version="1.0" encoding="utf-8"?>
<Customers>
   <Customer Id="1">
    <Name>rtertr</Name>
    <DOB>2010-12-12T00:00:00</DOB>
    <EMail>[email protected]</EMail>
  </Customer>
  <Customer Id="2">
    <Name>west</Name>
    <DOB>0001-01-01T00:00:00</DOB>
    <EMail>[email protected]</EMail>
   </Customer> 
  <Customer Id="3">
    <Name>west</Name>
    <DOB>0001-01-01T00:00:00</DOB>
    <EMail>[email protected]</EMail>
   </Customer> 
</Customers>

如何获取名称为 west (west) 的所有节点并将其存储在集合中?在我们的例子中,它应该返回 2 个节点(有两个节点的名称为 west。这必须使用 Linq to SQL 来实现。

I have this XML

<?xml version="1.0" encoding="utf-8"?>
<Customers>
   <Customer Id="1">
    <Name>rtertr</Name>
    <DOB>2010-12-12T00:00:00</DOB>
    <EMail>[email protected]</EMail>
  </Customer>
  <Customer Id="2">
    <Name>west</Name>
    <DOB>0001-01-01T00:00:00</DOB>
    <EMail>[email protected]</EMail>
   </Customer> 
  <Customer Id="3">
    <Name>west</Name>
    <DOB>0001-01-01T00:00:00</DOB>
    <EMail>[email protected]</EMail>
   </Customer> 
</Customers>

How to fetch all the nodes which have the name as west (<Name>west</Name>) and store it in a collection? In our case it should return 2 nodes (there are two nodes which have Name as west. This has to be achieved using Linq to SQL.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦明 2024-10-02 19:07:08
var doc = XDocument.Parse("<Customers>...</Customers>");

var result = doc.Root
                .Elements("Customer")
                .Where(e => (string)e.Element("Name") == "west")
                .ToList();

或者

var doc = XDocument.Parse("<Customers>...</Customers>");

var result = (from e in doc.Root.Elements("Customer")
              where (string)e.Element("Name") == "west"
              select e
             ).ToList();
var doc = XDocument.Parse("<Customers>...</Customers>");

var result = doc.Root
                .Elements("Customer")
                .Where(e => (string)e.Element("Name") == "west")
                .ToList();

or

var doc = XDocument.Parse("<Customers>...</Customers>");

var result = (from e in doc.Root.Elements("Customer")
              where (string)e.Element("Name") == "west"
              select e
             ).ToList();
迷途知返 2024-10-02 19:07:08

除非您首先转换数据并将其存储在 SQL 数据库中,否则无法使用 LINQ to SQL 访问 XML。它被称为 LINQ to SQL 是有原因的。也许您指的是 LINQ to XML,所以我会这样假设。

假设您有一个包含 XML 的 XDocument

var customers = myDocument.Root.Descendants()
    .Where(n => n.Name.LocalName == "Customer" &&
                n.Element("Name").Value == "west")
    .ToList();

It is not possible to use LINQ to SQL to access XML, unless you first convert the data and store it in an SQL database. It is called LINQ to SQL for a reason. Maybe you mean LINQ to XML so I will assume that.

Assuming you have an XDocument containing the XML:

var customers = myDocument.Root.Descendants()
    .Where(n => n.Name.LocalName == "Customer" &&
                n.Element("Name").Value == "west")
    .ToList();
○愚か者の日 2024-10-02 19:07:08

使用 ToList() 扩展方法。

 xdoc.Root.Descendants("Customer")
    .Where(c => c.Element("Name").Value == "west")
    .ToList();

With ToList() extension method.

 xdoc.Root.Descendants("Customer")
    .Where(c => c.Element("Name").Value == "west")
    .ToList();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文