C# Linq接收无法创建模型的值类型,仅支持基元类型或枚举类型

C# Linq接收无法创建模型的值类型,仅支持基元类型或枚举类型,c#,linq,C#,Linq,我收到以下错误: {“无法创建“OnlineContactChangeTableModel”类型的常量值。在此上下文中仅支持基元类型或枚举类型。”} 执行此代码时: List<OnlineContactChangeTableModel> ret = new List<OnlineContactChangeTableModel>(); ret = db.Address.AsNoTracking().Where(a => a.IsProcessed ==

我收到以下错误:

{“无法创建“OnlineContactChangeTableModel”类型的常量值。在此上下文中仅支持基元类型或枚举类型。”}

执行此代码时:

    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();