LINQ查询语法具有多个语句

YMM*_*YMM 2 c# linq linq-query-syntax

可以使用LINQ的查询语法重写此方法吗?

public IEnumerable<Item> GetAllItems()
{
    return Tabs.SelectMany(tab =>
        {
            tab.Pick();
            return tab.Items;
        });
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚tab.Pick()方法调用的位置.

Jon*_*eet 5

不,LINQ中的查询表达式要求每个选择部分等都是单个表达式,而不是多个语句.

但是,您可以编写一个单独的方法:

public IEnumerable<Item> PickItems(Tab tab)
{
    tab.Pick();
    return tab.Items;
}
Run Code Online (Sandbox Code Playgroud)

然后使用:

var query = from tab in tabs
            from item in PickItems(tab)
            select item.Name;
Run Code Online (Sandbox Code Playgroud)

(或者你想做什么.)