Я не уверен, что полностью понимаю ваш вопрос. Однако, если я правильно понял, то все, что вам нужно добавить, это условие, подобное этому:
if (condition)
results = results.Take(2);
else
results = results.Skip(2);
Итак, если condition
истинно, то в вашей последовательности результатов будут только первые 2 узла. И если condition
ложно, то у вас будут только оставшиеся элементы.
Моя первая интерпретация вашего вопроса состояла в том, что вам нужно было добавить в ваш запрос вызов Where
, чтобы в вашем наборе результатов были только те элементы, которые действительно содержат значение. Это будет выглядеть так:
var results = xdoc.Root
.Elements("Item")
.Descendants()
.Where(e => !string.IsNullOrEmpty(e.Value))
.Select(e => new { ElementName = e.Name, ElementValue = e.Value });