Синтаксис запроса LINQ с несколькими операторами


Можно ли переписать этот метод, используя синтаксис запроса LINQ?

public IEnumerable<Item> GetAllItems()
{
    return Tabs.SelectMany(tab =>
        {
            tab.Pick();
            return tab.Items;
        });
}

Я не могу понять, где разместить вызов метода tab.Pick().

1 2

1 ответ:

Нет, выражения запросов в LINQ требуют, чтобы каждая часть выборки и т. д. была одним выражением, а не несколькими операторами.

Однако вы можете написать отдельный метод:

public IEnumerable<Item> PickItems(Tab tab)
{
    tab.Pick();
    return tab.Items;
}

Затем используйте:

var query = from tab in tabs
            from item in PickItems(tab)
            select item.Name;

(или все, что вы хотите сделать.)