C# Linq接收无法创建模型的值类型,仅支持基元类型或枚举类型
我收到以下错误: {“无法创建“OnlineContactChangeTableModel”类型的常量值。在此上下文中仅支持基元类型或枚举类型。”} 执行此代码时:C# Linq接收无法创建模型的值类型,仅支持基元类型或枚举类型,c#,linq,C#,Linq,我收到以下错误: {“无法创建“OnlineContactChangeTableModel”类型的常量值。在此上下文中仅支持基元类型或枚举类型。”} 执行此代码时: List<OnlineContactChangeTableModel> ret = new List<OnlineContactChangeTableModel>(); ret = db.Address.AsNoTracking().Where(a => a.IsProcessed ==
List<OnlineContactChangeTableModel> ret = new List<OnlineContactChangeTableModel>();
ret = db.Address.AsNoTracking().Where(a => a.IsProcessed == false &&
a.IsDeleted == false).ToList()
.Select(aa => new OnlineContactChangeTableModel(aa)).ToList();
ret.AddRange(db.Email.AsNoTracking().Where(a => !ret.Any(rr => rr.Id == a.Id) &&
a.IsProcessed == false &&
a.IsDeleted == false).ToList()
.Select(aa => new OnlineContactChangeTableModel(aa)).ToList());
List ret=new List();
ret=db.Address.AsNoTracking()。其中(a=>a.IsProcessed==false&&
a、 IsDeleted==false).ToList()
.选择(aa=>new Online ContactChangeTableModel(aa)).ToList();
ret.AddRange(db.Email.AsNoTracking()。其中(a=>!ret.Any(rr=>rr.Id==a.Id)&&
a、 IsProcessed==false&&
a、 IsDeleted==false).ToList()
.选择(aa=>new Online ContactChangeTableModel(aa)).ToList();
错误发生在AddRange行上。当它点击这一行时,ret确实有记录,并且任何记录的Id字段都不为空。Id字段相当于个人Id。我只希望他们在列表中出现1次。我创建了一个新列表来跟踪Id,并解决了我的问题:
List<OnlineContactChangeTableModel> ret = new List<OnlineContactChangeTableModel>();
List<int> lIds = new List<int>();
ret = db.Address.AsNoTracking().Where(a => a.IsProcessed == false &&
a.IsDeleted == false).ToList()
.Select(aa => new OnlineContactChangeTableModel(aa)).ToList();
lIds.AddRange(ret.Select(s => s.Id).ToList();
ret.AddRange(db.Email.AsNoTracking().Where(a => !lIds.Any(rr => rr == a.Id) &&
a.IsProcessed == false &&
a.IsDeleted == false).ToList()
.Select(aa => new OnlineContactChangeTableModel(aa)).ToList());
List ret=new List();
列表盖=新列表();
ret=db.Address.AsNoTracking()。其中(a=>a.IsProcessed==false&&
a、 IsDeleted==false).ToList()
.选择(aa=>new Online ContactChangeTableModel(aa)).ToList();
AddRange(ret.Select(s=>s.Id).ToList();
ret.AddRange(db.Email.AsNoTracking()。其中(a=>!lIds.Any(rr=>rr==a.Id)&&
a、 IsProcessed==false&&
a、 IsDeleted==false).ToList()
.选择(aa=>new Online ContactChangeTableModel(aa)).ToList();
我创建了一个新列表来跟踪ID,并解决了我的问题:
List<OnlineContactChangeTableModel> ret = new List<OnlineContactChangeTableModel>();
List<int> lIds = new List<int>();
ret = db.Address.AsNoTracking().Where(a => a.IsProcessed == false &&
a.IsDeleted == false).ToList()
.Select(aa => new OnlineContactChangeTableModel(aa)).ToList();
lIds.AddRange(ret.Select(s => s.Id).ToList();
ret.AddRange(db.Email.AsNoTracking().Where(a => !lIds.Any(rr => rr == a.Id) &&
a.IsProcessed == false &&
a.IsDeleted == false).ToList()
.Select(aa => new OnlineContactChangeTableModel(aa)).ToList());
List ret=new List();
列表盖=新列表();
ret=db.Address.AsNoTracking()。其中(a=>a.IsProcessed==false&&
a、 IsDeleted==false).ToList()
.选择(aa=>new Online ContactChangeTableModel(aa)).ToList();
AddRange(ret.Select(s=>s.Id).ToList();
ret.AddRange(db.Email.AsNoTracking()。其中(a=>!lIds.Any(rr=>rr==a.Id)&&
a、 IsProcessed==false&&
a、 IsDeleted==false).ToList()
.选择(aa=>new Online ContactChangeTableModel(aa)).ToList();
只需在.AsNoTracking()
之后添加.ToList()
,它就可以工作了
ret = db.Address.AsNoTracking()
.ToList()
.Where(a => a.IsProcessed == false && a.IsDeleted == false)
.ToList()
.Select(aa => new OnlineContactChangeTableModel(aa))
.ToList();
只需在.AsNoTracking()
之后添加.ToList()
,它就可以工作了
ret = db.Address.AsNoTracking()
.ToList()
.Where(a => a.IsProcessed == false && a.IsDeleted == false)
.ToList()
.Select(aa => new OnlineContactChangeTableModel(aa))
.ToList();