我有一个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/

10-12 18:23