C# 为什么Linq-to实体在查询中识别查询,而不是在从方法返回查询时识别查询?

C# 为什么Linq-to实体在查询中识别查询,而不是在从方法返回查询时识别查询?,c#,entity-framework,asp.net-mvc-4,linq-to-sql,linq-to-entities,C#,Entity Framework,Asp.net Mvc 4,Linq To Sql,Linq To Entities,这是我发现的一个常见错误,但我不确定如何修复它 LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[ProjectX.Models.DTOs.ExampleDTOUDC] Select(Int32)' method, and this method cannot be translated into a store expression. 下面是有问题的违规代码 public IQuerya

这是我发现的一个常见错误,但我不确定如何修复它

LINQ to Entities does not recognize the method
'System.Linq.IQueryable`1[ProjectX.Models.DTOs.ExampleDTOUDC] Select(Int32)'
 method, and this method cannot be translated into a store expression.
下面是有问题的违规代码

    public IQueryable<ExampleDTO> Select()
    {
        return from e in db.vw_Example
                   select new ExampleDTO()
                   {

                       exampleUDCs =  new ExampleUDCRepository().Select(v.VehicleID).AsEnumerable()
                       //etc


                   };
    }
如果您想查看,下面是我的ExampleDTO类中的ExampleUDCs声明:

public IEnumerable<ExampleUDCDTO> ExampleUDCs { get; set; }
public IEnumerable ExampleUDCs{get;set;}
有人知道我有什么方法可以解决这个问题,可以重用我的
ExampleUDCDTO().Select(int-id)
方法中的代码,而不是将所有查询放入第一个
Select()
方法中


如果你需要更多的信息,请告诉我。谢谢。

实体框架使用表达式,它试图将完整的表达式编译成一段SQL。因为您正在创建一个包含方法调用的表达式,所以EF也会尝试将该方法调用编译为SQL。这是不可能的

        public IQueryable<ExampleDTO> Select()
    {
        return from e in db.vw_Example
                   select new ExampleDTO()
                   {    
                       ExampleID = e.ExampleID,
                       ExampleUDCs =  (from eudc in db.ExampleUDCs
                                      where eudc.ExampleID == id
                                      select new ExampleUDCDTO()
                                      {
                                           ExampleID = eudc.ExampleID
                                           //etc
                                      })


                   };
    }
public IEnumerable<ExampleUDCDTO> ExampleUDCs { get; set; }