参数类型lambda表达式不能赋值给参数类型int error

Ehs*_*bar 1 c# asp.net-mvc lambda asp.net-mvc-3 asp.net-mvc-4

我有这样的Major模型:

public int Id { get; set; }
public string MajorName{ get; set; }
public string Password { get; set; }
public System.DateTime RegisterDate { get; set; }
public string StudentId { get; set; }
public string State { get; set; }
public int FacultyId { get; set; }
public int MajorId { get; set; }
public HttpPostedFileBase ImgFile { get; set; }
Run Code Online (Sandbox Code Playgroud)

所以我在上面的模型库中有这样的方法:

public Major FindMajorById(int id)
{
    return _dbcontext.Majors.Find(id);
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我通过了id,我需要专业名称:

<td>
    @{
        EducationRepositor.MajorRepository objmajor=new MajorRepository();
     }
     @Html.DisplayFor(objmajor.FindMajorById(modelItem => int.Parse(item.MajorId)).MajorName)
</td>
<td>
    @Html.DisplayFor(modelItem => item.Degree)
</td>
Run Code Online (Sandbox Code Playgroud)

但是我在这一行中看到了错误:

@Html.DisplayFor(objmajor.FindMajorById(modelItem => int.Parse(item.MajorId)).MajorName)
Run Code Online (Sandbox Code Playgroud)

我的错误:

参数类型lambda表达式不能赋值给参数类型int

Jon*_*eet 5

我怀疑你基本上得到了你的lambda表达式,你的方法调用错误的方法.你可能想要:

@Html.DisplayFor(modelItem => objmajor.FindMajorById(int.Parse(modelItem.MajorId)).MajorName)
Run Code Online (Sandbox Code Playgroud)

换句话说,您正在创建一个lambda表达式,它接受一个模型项,解析其MajorId属性,调用FindMajorById,然后使用MajorName结果的属性.该lambda表达式用作参数DisplayFor.

我不是MVC专家(无论如何),所以不清楚lambda表达式提供了多少好处,但是 - 你是否真的可以直接调用该方法.