У меня есть существующая коллекция объектов с двумя интересующими свойствами. Оба свойства одного типа. Я хочу создать новую последовательность, состоящую из значений свойств. Вот один из способов (для простоты я использую кортежи вместо своего пользовательского типа):
var list = new List<Tuple<string, string>>
{ Tuple.Create("dog", "cat"), Tuple.Create("fish", "frog") };
var result =
list.SelectMany(x => new[] {x.Item1, x.Item2});
foreach (string item in result)
{
Console.WriteLine(item);
}
Результат:
dog
cat
fish
frog
Это дает мне результаты, которые я хочу, но есть ли лучший способ сделать это (в частности, без необходимости создавать массивы или коллекции)?
Edit:
Это также работает за счет итерации по коллекции дважды:
var result = list.Select(x => x.Item1).Concat(list.Select(x => x.Item2));