我有一个lambda表达式,其中需要分配一个局部变量,以避免每个结果集两次调用RetrieveAge(Datetime birthDate)。
我的lambda表达式如下所示:
result = myList.AsEnumerable().Where(f => DateHelper.RetrieveAge(f.Birthdate) >= 20 && DateHelper.RetrieveAge(f.Birthdate) <= 40).Select(x => new Person { Name = x.Name, Id = x.Id, Alias = x.Alias }).ToList();
我正在尝试实现以下目标:
var result = myList.AsEnumerable().Where(f => { var age = DateHelper.RetrieveAge(f.Birthdate); age >= 20 && age <= 40 }).Select(x => new Person { Name = x.Name, Id = x.Id, Alias = x.Alias }).ToList();
但我不知道如何正确地做到这一点。任何提示或建议将不胜感激。
最佳答案
您快到了-您需要添加return
和分号:
var result = myList
.AsEnumerable()
.Where(f => {
var age = DateHelper.RetrieveAge(f.Birthdate);
return age >= 20 && age <= 40; // <<== Here
}).Select(x => new Person {
Name = x.Name, Id = x.Id, Alias = x.Alias }
).ToList();
关于c# - 在lambda表达式中分配局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20030358/