具有多个语句的 LINQ 查询语法

LINQ query syntax with multiple statements

能否使用 LINQ 的查询语法重写此方法?

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

我不知道在哪里放置 tab.Pick() 方法调用。

不,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;

(或者任何你想做的。)