【发布时间】:2016-11-24 12:20:04
【问题描述】:
下面的代码示例说明了我的问题。 如何将 lambda 的一部分放在其他地方?
如何从我的“GetGurus()”方法中调用“Foo”? 我希望 LINQ 将其转换为 1 条语句。
public enum GuruLevel
{
NotSet,
Goku,
SuperSayan
}
private IEnumerable<PersonInfo> GetGurus()
{
using (var context = new CRMContext())
{
var persons = context.Person
.Where(p => p.Experience > 10)
.OrderBy(p => p.DateOfBirth)
.Select(p => new PersonInfo())
{
StackOverFlowName = p.StackOverFlowName,
Experience = p.Experience,
GuruStatus = Foo //(p.Experience > 9000) ? GuruLevel.SuperSayan : GuruLevel.Goku
}
return persons.ToList();
}
}
public static System.Linq.Expressions.Expression<Func<Person, GuruLevel>> Foo
{
get
{
return bar => (bar.Experience > 9000) ? GuruLevel.SuperSayan : GuruLevel.Goku;
}
}
【问题讨论】:
-
我正在阅读您的链接,看来这正是我所需要的。虽然实现起来似乎相当复杂:(
-
很遗憾您没有发布答案,因为您给出了最佳答案!我安装了DelegateDecompiler。它有效!
-
事实上,这个问题原来是我提到的问题的重复。理想情况下,它应该因此而关闭。
-
我们的终端用户现在也很开心!我们项目查询的性能提升超出预期!我喜欢它!
标签: c# linq lambda linq-to-entities