Лучшим решением было бы использовать LINQ, если вы можете. Если вы хотите исключение, вы можете использовать:
var node = nodes.Where(n => node.GetPropertyValue().ToString() == "TestValue")
.First();
(Вы также можете использовать Single
, если должен быть ровно один такой узел.)
Если вы не хотите исключение, используйте FirstOrDefault
вместо:
var node = nodes.Where(n => node.GetPropertyValue().ToString() == "TestValue")
.FirstOrDefault();
Тогда node
будет нулевым, если нет узлов TestValue.
Чтобы проверить наличие тестового узла, используйте Any
var isTest = nodes.Where(n => node.GetPropertyValue().ToString() == "TestValue")
.Any();
(Ваш последний метод в настоящее время не будет компилироваться, так как он может достичь конца без возврата.)
То, что подходит, действительно зависит от того, что вы пытаетесь сделать. Если отсутствие тестового узла указывает на ошибку, тогда выдается исключение. Если нет, используйте null
, чтобы сигнализировать, что это вполне разумно, или вы можете использовать шаблон TryXXX
для явного возврата значения bool
, сохраняя найденный узел (если есть) в параметре out.