重构选择Linq表达式的一部分?

Jon*_*nas 5 .net linq linq-to-sql

我正在玩一些Linq-SQL的东西,做这样的事情:

var foo = from f in db.Foo where f.Bar > 5 select f;
Run Code Online (Sandbox Code Playgroud)

这一切都很好,花花公子,我知道我也可以这样做:

var foo = from f in db.Foo where f.Bar > 5 select new { f.Bar, f.Baz };
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果我想在运行时确定要选择哪些Foo部分,我可以将该查询的选择部分分解出来吗?如:

var foo = from f in db.Foo where f.Bar > 5 select SomeMethodThatReturnsThePropertiesOfFooIReallyWant();
Run Code Online (Sandbox Code Playgroud)

编辑澄清:我正在寻找SomeMethod ...()的语法和返回类型.

如果我想这样做一次:

select new { f.Bar, f.Baz };
Run Code Online (Sandbox Code Playgroud)

但其他时候这样做:

select new { f.Baz, f.Other };
Run Code Online (Sandbox Code Playgroud)

基于内存中的数据(没有做一个巨大的案例陈述),如果可能的话,我该如何做?

Jam*_*ran 2

当然,尽管使用流畅的语法更容易:

var query_foo = db.Foo.Where(f=>f.Bar >  5);
//  :
var foo =query_foo.Select(f=>SomeMethodThatReturnsEtc(f));
Run Code Online (Sandbox Code Playgroud)