Asp.net mvc 4 缩小查询范围以用作实体框架MVC3中SelectList的源
我有一些拥有大约20个属性的大型实体,在某些情况下,我需要从中创建DropDownList。在SelectList中,您只使用查询返回的原始20个属性中的2个属性(ID和名称)作为结束 我正在使用此方法加载此文件:Asp.net mvc 4 缩小查询范围以用作实体框架MVC3中SelectList的源,asp.net-mvc-4,entity-framework-4,selectlist,Asp.net Mvc 4,Entity Framework 4,Selectlist,我有一些拥有大约20个属性的大型实体,在某些情况下,我需要从中创建DropDownList。在SelectList中,您只使用查询返回的原始20个属性中的2个属性(ID和名称)作为结束 我正在使用此方法加载此文件: new SelectList(db.Contacts.AsNoTracking()。其中(x=>x.idTenant==CurrentTenantID),“ContactId”,“Name”) 这很好,但是Contacts数据库集上的查询显然返回了所有列如何将列从20缩小到2,以便对
new SelectList(db.Contacts.AsNoTracking()。其中(x=>x.idTenant==CurrentTenantID),“ContactId”,“Name”)代码>
这很好,但是Contacts数据库集上的查询显然返回了所有列如何将列从20缩小到2,以便对数据库进行更轻松的查询?
我知道我可以为这种情况在数据库中执行存储过程或视图,并将其用于DropDownList填充,但。。。还有另一种直接使用实体框架的方法吗
这发生在多个实体中,而不仅仅是联系人,因此我希望有一个明确的策略来处理此场景。您可以添加一个。选择到您的查询中:
new SelectList(db.Contacts.AsNoTracking()
.Where(x => x.idTenant == CurrentTenantID)
.Select(x => new { x.ContactId, x.Name })
, "ContactId", "Name");
+这正是你应该做的。使用select创建一个投影,将一个集合转换为另一个集合,在本例中,将一组列/值转换为较少的列/值。