Использование Single
означает, что вы ожидаете, что будет ровно 1 результат. Когда возвращается больше результатов, Single выдаст исключение. Вы можете использовать First
для получения первого элемента или Last
для последнего. Для нескольких элементов вы хотите просмотреть результаты и получить к ним доступ по отдельности.
Если нет соответствующего результата, вы можете использовать SingleOrDefault
для возврата значения null
или значения по умолчанию используемого типа.
Является ли queryUserResponseData
XElement или XDocument? Если это XDocument, вам сначала нужно получить доступ к корню XML, например:
var userData = queryUserResponseData.Root.Elements("user")
.Single(u => u.Element("username").Value == userName);
Кроме того, поиск User1 или User2 в вашем примере будет работать. Однако, если вы искали User3 , которого не существует, Single выдаст исключение. В этом случае вы должны использовать SingleOrDefault:
var userData = queryUserResponseData.Elements("user")
.SingleOrDefault(u => u.Element("username").Value == "User3");