繁体   English   中英

具有一对多属性的ToList上的LINQ to Entities错误

[英]LINQ to Entities error on ToList with a one-to-many attribute

每当我尝试运行以下代码

        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()方法调用,但是删除它们并不能解决问题。

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

我认为这部分是: 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM