Проверка по XML-файлу и использование атрибутов для проверки по введенному пользователем значению - PullRequest
0 голосов
/ 31 августа 2011

У меня есть XML-файл: -

<Users>
  <User Name="abc" Pass="asp"></User>
  <User Name="def" Pass="net"></User>
</Users>

Мне нужно написать код, в котором два введенных пользователем значения, введенные в текстовое поле, например: - usernm и pass, должны быть проверены на соответствие атрибуту конкретного узла и его проходу для возврата истинного значения.

Я хочу проверить d, введя usernm и передать имя атрибута, которое, если совпадения, также проверит этот проход и вернет значение true из fasle.

Пожалуйста, предложите что-нибудь без использования итератора и перечислим.

1 Ответ

1 голос
/ 31 августа 2011

Ну, LINQ to XML в значительной степени основан на итераторах, поэтому их совсем не использовать ... но я подозреваю, что вы хотите что-то вроде:

return doc.Descendants("User")
          .Any(x => (string) x.Attribute("Name") == targetName &&
                    (string) x.Attribute("Pass") == targetPassword);

Или назначить его переменной:

bool foundUser = doc.Descendants("User")
                    .Any(x => /* code as before */);

или, если вы действительно хотите это как if условие:

if (doc.Descendants("User")
       .Any(x => /* code as before */))
{
}

Лично я бы либо извлек этов отдельный метод (который может быть просто оператором возврата согласно первому примеру) или для простоты используйте локальную переменную - мне не нравится, когда мои условия if настолько сложны.

Это будет определять, соответствует ли какой-либо элемент User соответствующим атрибутам.Конечно, он не дает никакой информации об элементе, который соответствует.Для этого вы хотите использовать FirstOrDefault вместо Any, а затем, если элемент не равен NULL, это первое совпадение.

...