Razor Page .NET Core 2.2 If + ElseIf语句在Lambda表达式中不起作用

时间:2019-05-22 07:13:41

标签: c# entity-framework linq where-clause

在“ .OrderBy(p =>”)下方的“ =>”下方有一个红色波浪形,并在尝试构建时返回此错误。我试图做的是根据其内容有条件地对字段进行排序我已经尝试了带括号和不带括号的内容。我进行了搜索,但是由于使用了“ if”语句,因此此问题有所不同。我尝试了最后一个“ else”语句,但使所有内容变为红色。

“并非所有代码路径都在类型为'Func'的lambda表达式中返回值”,然后在添加“ else return 3”后出现错误:“带有语句主体的lambda表达式无法转换为表达式树。”

public List<OESAC.Models.BoardMembers> BoardMembers { get; set; }


public async Task OnGetAsync()
{          


 BoardMembers = await _context.BoardMembers
        .Select(p => new OESAC.Models.BoardMembers
        {
            WholeName = p.WholeName,
            Office = p.Office,
            Email = p.Email,
            Representing = p.Representing,
            WebDisplaySection = p.WebDisplaySection,
            Employer = p.Employer
        }).Where(p => p.WebDisplaySection == "Officers").OrderBy(p =>
        {
            if (p.Office == "President")
                return 0;
            else if (p.Office == "Vice-President")
                return 1;
            else if (p.Office == "Secretary-Treasurer")
                return 2;
        }).ToListAsync();

1 个答案:

答案 0 :(得分:-2)

我替换了此:

.OrderBy(p =>
        {
            if (p.Office == "President")
                return 0;
            else if (p.Office == "Vice-President")
                return 1;
            else if (p.Office == "Secretary-Treasurer")
                return 2;
        }).ToListAsync();

与此:

.OrderBy(p => p.Office == "President" ? 0 : p.Office == "Vice-President" ? 1 : p.Office == "Secretary-Treasurer" ? 2 : 3).ToListAsync();

我希望它对某人有用。在其他任何地方都没有看到这种解决方案。