の定数値を作成できません。エラーは次のとおりです。 '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();
}
クエリを有効な式に変換するカスタム式ツリーを使用する方法はありますか? –