XML LINQ: как использовать select с where? - PullRequest
0 голосов
/ 14 октября 2011

У меня есть каталог XML с названием продукта и ценой продукта.

Я успешно выбираю все элементы из моего каталога с этим кодом:

  var products = xElem.Descendants("catalog")
            .Select(x => new
            {
                ProductPrice= x.Element("Price").Value,
                ProductName = x.Element("Name").Value
            });

Как изменить приведенный выше код длявыбрать только элементы, имена которых содержат «abc» и «xyz»?В SQL я бы использовал WHERE и LIKE, здесь я хочу сделать это с помощью LINQ.Спасибо.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

На самом деле, я хочу, чтобы пользователь мог гибко выполнять запросы.Поэтому, если пользователь введет «красная рубашка из хлопка», я покажу все элементы, в которых есть все эти три термина: «красная», «рубашка» и «хлопок».Количество терминов «где» не фиксировано.

1 Ответ

2 голосов
/ 14 октября 2011
var products = from d in xElem.Descendants("catalog")
               where d.Element("Name").Value.Contains("abc")
                  || d.Element("Name").Value.Contains("xyz")
               select new { Name  = d.Element("Name") .Value, 
                            Price = d.Element("Price").Value
                          }
;
...