转换iqueryableobject>时出现NotSupportedException

本文关键字:NotSupportedException iqueryableobject 转换 | 更新日期: 2023-09-27 17:53:51

当我这样做时:

    var db = new NotentoolEntities();
    IQueryable<GroupOfBranches> queryGOB = db.tabGroupOfBranches.Cast<GroupOfBranches>().Where(x => x.intGroupID.Equals(ID));
    List<GroupOfBranches> GOB = new List<GroupOfBranches>(queryGOB); //here is the error

我得到了以下错误:

A first chance exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll

转换iqueryableobject>时出现NotSupportedException

我认为底层LINQ提供程序无法将对Equals的调用转换为它所知道的任何内容。

使用==操作符代替。这将在一个不同的表达式树中结束,该表达式树可以被翻译。

var db = new NotentoolEntities();
IQueryable<GroupOfBranches> queryGOB =
    db.tabGroupOfBranches.Cast<GroupOfBranches>().Where(x => x.intGroupID == ID));
List<GroupOfBranches> GOB = new List<GroupOfBranches>(queryGOB);

如果GroupOfBranches是从tabGroupOfBranches返回的任何类型派生出来的类,那么你可能应该使用OfType,而不是Cast。

否则,Cast可能在Where之后,并被Select取代,Select会显式地创建GroupOfBranches类的实例。

可以考虑将代码更改为

using (var db = new NotentoolEntities())
   {
      var GOB = db.tabGroupOfBranches.Where(x => x.intGroupID == ID).Select(y => new GroupOfBranches
          {
              /// here specify your fields
          }).AsNoTracking().ToList();
    }
相关文章:
  • 没有找到相关文章