Я в настоящее время прокладываю себе путь через кривую обучения, которая является LINQ, и я мог действительно использовать некоторую помощь. Я не знаю, возможно ли то, что я хочу, но если я должен был держать пари, я держал пари, что это.
У меня в настоящее время есть список объектов, названных _tables, и каждый из этих объектов имеет в нем другой список объектов, выставленных через свойство, "Индексы". По существу я хотел бы закончить с одним Списком, который содержит все Индексы от всех _tables.
Вот то, что я имею до сих пор:
var indexes = from TableInfo tab
in _tables
where tab.Indexes.Count > 0
select tab.Indexes;
К сожалению, это, кажется, дает мне другой Список Списков, но только там, где Индексный Список содержит больше чем одно значение... Там некоторый путь состоит в том, чтобы получить все эти списки вместе без циклов?
Вы хотите использовать метод расширения SelectMany
.
_tables.SelectMany(t => t.Indexes)
Вам не нужно предложение 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;
Это должно быть немного более знакомым синтазом
В дополнение к ответу tbischel версия выражения запроса того, что вы собираетесь это ниже.
var indexes = from TableInfo tab in _tables
from index in tab.Indexes
select index;