如何使用具有相同属性名称的多个属性的select方法

时间:2016-11-29 11:10:53

标签: c# asp.net-mvc entity-framework linq asp.net-mvc-4

控制器

public JsonResult GetFee(int? Class_Id)
{
    var list = Repository.FeeRepository.GetAll()
        .Where(i => i.Class_Id == Class_Id)
        .Select(x => new {x.tbl_SchoolProfile.Name, x.tbl_Classes.Name,  x.tbl_FeeHead.Name, x.Amount})
        .ToList();
    return Json(list,JsonRequestBehavior.AllowGet);
}

我有问题访问其他表的字段是tbl_Classes,tbl_FeeHead是在FeeRepository.GetAll()中加入这个费用表我选择来自tbl_fee的所有数据它给出编译错误(匿名类型不能有具有相同名称的多个属性)所以我该如何解决此错误?

1 个答案:

答案 0 :(得分:4)

您需要在匿名对象创建表达式中指定所需的名称,例如

.Select(x => new {
    SchoolName = x.tbl_SchoolProfile.Name,
    ClassName = x.tbl_Classes.Name,
    FeeHeadName = x.tbl_FeeHead.Name,
    x.Amount
})

如果编译器会根据您指定的值推断出正确的名称,则只能保留名称,例如

new { Foo = x.Foo, Bar = y.Bar }

相当于

new { x.Foo, y.Bar }