LINQ to XML запрос и фильтрация имен - PullRequest
0 голосов
/ 20 ноября 2011

Я работаю в Windows Phone 7 C #, XAML, XML и LINQ.Мне нужно организовать поиск по части имени в следующем XML:

<Row>
  <Myday>23</Myday>
  <Mymonth>12</Mymonth>
  <Mynames>Alex, Joanna, Jim</Mynames>
</Row>

<Row>
  <Myday>24</Myday>
  <Mymonth>12</Mymonth>
  <Mynames>John, David</Mynames>
</Row>

У меня следующий запрос:

var myData = from query in loadedData.Descendants("Row")
             where query.Element("Mynames").Value.Contains("Jo")
             select new Kalendars
                        {
                            Myday = (int)query.Element("Myday"),
                            Mymonth = (int)query.Element("Mymonth"),
                            Mynames = (string)query.Element("Mynames")
                        };
             listBoxSearch.ItemsSource = myData;

Проблема в том, что он вернет полную часть именкак "Алекс, Джоанна, Джим" и "Джон, Дэвид".Как я могу получить только Джоанна и Джон?Второй вопрос: как можно сделать, чтобы пользователь ввел ...Value.Contains("jo"), а запрос все еще возвращает Джоанну и Джона?

1 Ответ

1 голос
/ 20 ноября 2011

Вам нужно будет разбить эту строку, чтобы получить отдельные имена.В этом случае что-то вроде этого будет хорошо.

string line = "Alex, Joanna, Jim";
string[] names = line.Split(new[] { ", " }, StringSplitOptions.None);
var jos = from name in names
          where name.Contains("Jo")
          select name; // ["Joanna"]

Просто включите это в ваш запрос.

Исходная строка содержит буквы "Jo", поэтому при вызове этой функции возвращается значение true.Он не рассматривает каждое слово в отдельности, а только строку в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...