2013-05-02 38 views
0

每当我试着运行下面的代码LINQ到实体错误在ToList有一个一对多的属性

 employees = from e in this.entities.employees select e; 
     var ett = (from e in employees where 
         (e.salaries.ToList().Where(i => i.to_date.Year == 9999).First().salary1 > TT) 
        select e); 

     var etf = (from e in employees 
        where 
         (e.salaries.ToList().Where(i => i.to_date.Year == 9999).First().salary1 < TT && 
         e.salaries.ToList().Where(i => i.to_date.Year == 9999).First().salary1 > TF) 
        select e); 

     foreach (employee e in ett) 
     { 
      this.members.memberships.AddObject(new membership 
      { 
       FirstName = e.first_name, 
       LastName = e.last_name, 
       MembershipClass = "regular", 
       VerificationCode = "abc1234" 
      }); 
     } 

     foreach (employee e in etf) 
     { 
      this.members.memberships.AddObject(new membership 
      { 
       FirstName = e.first_name, 
       LastName = e.last_name, 
       MembershipClass = "regular", 
       VerificationCode = "abc1234" 
      }); 
     } 

我收到以下错误:

LINQ to Entities does not recognize the method 'System.Collections.Generic.List`1[app.salary] ToList[salary](System.Collections.Generic.IEnumerable`1[app.salary])' method, and this method cannot be translated into a store expression. 

Employee类并保持与工资一对多的关系。据我所知,这些错误引用了.ToList()方法调用,但删除它们并没有解决问题。

编辑:增加了更多的代码,希望有助于。

+1

什么是'ett'和'etf'?您没有显示导致问题的代码。 – 2013-05-02 01:55:21

+0

错误说'app.salary',但是你的代码没有完整的图片。 – Turbot 2013-05-02 02:09:33

回答

0

我觉得这部分内容是:e.salaries.ToList()是问题所在。你不应该做.ToList()做LINQ查询,尽量不.ToList()

var ett = (from e in employees where 
         (e.salaries.Where(i => i.to_date.Year == 9999).First().salary1 > TT) 
        select e); 

    var etf = (from e in employees 
       where 
        (e.salaries.Where(i => i.to_date.Year == 9999).First().salary1 < TT && 
        e.salaries.Where(i => i.to_date.Year == 9999).First().salary1 > TF) 
       select e); 
相关问题