Да, это возможно, вы могли бы сгруппировать их по индексу в массиве:
string[] source = new string[] { "1", "Name1", "Value1", "2", "Name2", "Value2", "3", "Name3", "Value3" };
var result = source
.Select((element, index) => new { element, index })
.GroupBy(x => x.index/3)
.Select(x => new
{
Id = x.ElementAt(0).element,
Name = x.ElementAt(1).element,
Value = x.ElementAt(2).element
}).ToList();
// at this stage the result variable will represent a list of 3 elements where
// each element is an anonymous object containing the 3 properties. You could of course
// replace the anonymous object with a model if you intend to use the result of the query
// outside of the scope of the method it is being executed in.
Очевидно, что в этом примере нет проверки ошибок. Это то, что вы можете рассмотреть, прежде чем запускать запрос LINQ. Длина массива должна быть делимой на 3, очевидно.
Если возможно, я хочу это увидеть; будет очень красивый код. – frenchie
Для справки, некоторые связанные вопросы можно найти по адресу http://stackoverflow.com/questions/1290451/how-to-group-items-by-index-c-sharp-linq и http://stackoverflow.com/questions/860305 /, как в использовании-LinQ-к-группы-каждый-н-число-строк. –