Как искать набор узлов, используя критерии поиска, используя Linq to SQL? - PullRequest
0 голосов
/ 01 октября 2010

У меня есть этот XML

<?xml version="1.0" encoding="utf-8"?>
<Customers>
   <Customer Id="1">
    <Name>rtertr</Name>
    <DOB>2010-12-12T00:00:00</DOB>
    <EMail>werer@test.com</EMail>
  </Customer>
  <Customer Id="2">
    <Name>west</Name>
    <DOB>0001-01-01T00:00:00</DOB>
    <EMail>west@test.com</EMail>
   </Customer> 
  <Customer Id="3">
    <Name>west</Name>
    <DOB>0001-01-01T00:00:00</DOB>
    <EMail>west@test.com</EMail>
   </Customer> 
</Customers>

Как получить все узлы с западным именем (<Name>west</Name>) и сохранить их в коллекции? В нашем случае он должен вернуть 2 узла (есть два узла, которые имеют имя как запад. Это должно быть достигнуто с помощью Linq to SQL.

Ответы [ 3 ]

1 голос
/ 01 октября 2010
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();
0 голосов
/ 01 октября 2010

С ToList() методом расширения.

 xdoc.Root.Descendants("Customer")
    .Where(c => c.Element("Name").Value == "west")
    .ToList();
0 голосов
/ 01 октября 2010

Невозможно использовать LINQ to SQL для доступа к XML, если вы сначала не конвертируете данные и не сохраняете их в базе данных SQL.По какой-то причине он называется LINQ to SQL .Может быть, вы имеете в виду LINQ для XML , поэтому я предполагаю, что

Предполагая, что у вас есть XDocument, содержащий XML:

var customers = myDocument.Root.Descendants()
    .Where(n => n.Name.LocalName == "Customer" &&
                n.Element("Name").Value == "west")
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...