У меня есть существующая коллекция объектов с двумя интересными свойствами. Оба свойства одного типа. Я хочу создать новую последовательность, состоящую из значений свойств. Вот один из способов (я использую кортежи вместо моего пользовательского типа для простоты):Создать последовательность, состоящую из нескольких значений свойств
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));
Что такое «результат [вы] хотите»? Имеет зубчатый массив? Создание списка анонимных типов? ... –
Если вы указали очевидное, вы можете сделать «var result = new [] {« dog »,« cat »,« fish »,« frog »};« Но если вы должны начать со списка кортежей, то, что у вас отлично выглядит. –
@jmh_gr - Я только что редактировал вопрос для ясности. Я хочу 'IEnumerable', состоящий из 'originalListFirstItem.StringProperty1',' originalListFirstItem.StringProperty2', 'originalListSecondItem.StringProperty1',' originalListSecondItem.StringProperty2' и т. Д. –
TrueWill