LINQ - Получить все объекты в Списке в рамках Списка?

Я в настоящее время прокладываю себе путь через кривую обучения, которая является LINQ, и я мог действительно использовать некоторую помощь. Я не знаю, возможно ли то, что я хочу, но если я должен был держать пари, я держал пари, что это.

У меня в настоящее время есть список объектов, названных _tables, и каждый из этих объектов имеет в нем другой список объектов, выставленных через свойство, "Индексы". По существу я хотел бы закончить с одним Списком, который содержит все Индексы от всех _tables.

Вот то, что я имею до сих пор:

var indexes = from TableInfo tab
              in _tables
              where tab.Indexes.Count > 0
              select tab.Indexes;

К сожалению, это, кажется, дает мне другой Список Списков, но только там, где Индексный Список содержит больше чем одно значение... Там некоторый путь состоит в том, чтобы получить все эти списки вместе без циклов?

19
задан Piotr Kula 2 September 2013 в 16:03
поделиться

3 ответа

Вы хотите использовать метод расширения SelectMany .

_tables.SelectMany(t => t.Indexes)
39
ответ дан 30 November 2019 в 02:33
поделиться

Вам не нужно предложение where, и вам также не нужно говорить ему, что такое tab

И вам нужно использовать SelectMany

var indexes = (from tab in _tables).SelectMany(t => t.Indexes)

Или вы можете сделать это так

   var indexes = from tab in _tables
                  from t in tab.Indexes
                  select t;

Это должно быть немного более знакомым синтазом

5
ответ дан 30 November 2019 в 02:33
поделиться

В дополнение к ответу tbischel версия выражения запроса того, что вы собираетесь это ниже.

var indexes = from TableInfo tab in _tables 
              from index in tab.Indexes
              select index;
6
ответ дан 30 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: