Here is the error : Unable to create a constant value of type 'mvcinfosite.ViewModels.GrpSearchHolder'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.
How can I resolve that error. I Do a litle example to show you my problem. In my real project, MyGrp1,MyGrp2,MyGrp3 is replace by ListBox. I use it to filter my data.
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();
}