Надеюсь, я смогу объяснить это там, где это имеет смысл, но я пытаюсь получить список объектов из главного списка, используя специфический и сложный (по крайней мере, для меня сложный) набор критериев.
У меня есть класс TableInfo, который предоставляет список ForeignKeyInfo. ForeignKeyInfo имеет строковое свойство (среди прочего), называемое Table. Мне нужно выполнить некоторую последовательную обработку с использованием моих объектов TableInfo, но работать только с объектами TableInfo, которые я еще не обработал. Чтобы отслеживать, какие объекты TableInfo уже были обработаны, у меня есть список, в котором сохраняется имя таблицы после завершения обработки.
Я хочу зацикливаться, пока все элементы моей коллекции TableInfo не появятся в моем обработанном списке. Для каждой итерации цикла я должен обрабатывать все элементы TableInfo, где все строки ForeignKeyInfo.Table появляются в моем обработанном списке.
Вот как я написал это в «стандартном» циклическом коде:
while(processed.Count != _tables.Count)
{
List<TableInfo> thisIteration = new List<TableInfo>();
foreach (TableInfo tab in _tables)
{
bool allFound = true;
foreach (ForeignKeyInfo fk in tab.ForeignKeys)
{
allFound = allFound && processed.Contains(fk.Table);
}
if (allFound && !processed.Contains(tab.Name))
{
thisIteration.Add(tab);
}
}
//now do processing using thisIteration list
//variable, "thisIteration", is what I'd like to replace with the result from LINQ
}