以下是错误:无法创建类型为'mvcinfosite.ViewModels.GrpSearchHolder'的常量值。在此上下文中仅支持基本类型(如Int32,String和Guid)。表达式树错误:无法创建类型为
我该如何解决该错误。 我做一个小例子来向你展示我的问题。在我的真实项目中,MyGrp1,MyGrp2,MyGrp3被ListBox替代。我用它来过滤我的数据。
public class MyGroupHolder
{
public string GrpName { get; set; }
public List<int ?> ListSelectedGrpDescID { get; set; }
}
public ActionResult Index()
{
//Database Context
DBEntities db = EntityFactory.GetEntity();
//Variables
List<MyGroupHolder> ListGrpHolder = new List<MyGroupHolder>();
//Imagine a 3 listbox (MyGrp1,MyGrp2,MyGrp3)
//Each listbox contains selected value.
MyGroupHolder MyGrp1 = new MyGroupHolder();
MyGrp1.GrpName = "Grp 1 Test";
MyGrp1.ListSelectedGrpDescID = new List<int?>();
MyGrp1.ListSelectedGrpDescID.Add(55);
MyGroupHolder MyGrp2 = new MyGroupHolder();
MyGrp2.GrpName = "Grp 2 Test";
MyGrp2.ListSelectedGrpDescID = new List<int?>();
MyGrp2.ListSelectedGrpDescID.Add(56);
MyGroupHolder MyGrp3 = new MyGroupHolder();
MyGrp3.GrpName = "Grp 3 Test";
MyGrp3.ListSelectedGrpDescID = new List<int?>();
MyGrp3.ListSelectedGrpDescID.Add(57);
ListGrpHolder.Add(MyGrp1);
ListGrpHolder.Add(MyGrp2);
ListGrpHolder.Add(MyGrp3);
//Getting a list of Locations base on the Group Filter
var ListLocation = db.Locations.Where(p => ListGrpHolder.Any(pg => pg.ListSelectedGrpDescID.Count == 0 || p.GroupLocations.Select(sg => sg.GrpDescID).Intersect(pg.ListSelectedGrpDescID).Any())).ToList();
return View();
}
是否有自定义表达式树将我的查询转换为有效表达式的方法? –