2017-12-23 5 views
2

Kann diese Methode mithilfe der LINQ-Abfragesyntax umgeschrieben werden?LINQ-Abfragesyntax mit mehreren Anweisungen

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

ich kann nicht herausfinden, wo tab.Pick() Methodenaufruf zu platzieren.

Antwort

5

Nein, Abfrageausdrücke in LINQ erfordern, dass jeder Auswahlteil usw. ein einzelner Ausdruck ist, nicht mehrere Anweisungen.

Sie können jedoch eine separate Methode schreiben:

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

Dann nutzen:

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

(. Oder was auch immer Sie tun wollen)

Verwandte Themen