from p in context.ParentCompanies
where p.Name.Contains(e.Filter)
orderby p.Name
select new { Company = p.Name + "," + p.Country };
当我添加 p.Country 或任何其他属性时,上述linq
查询失败。
例外:
Could not translate expression 'Table(ParentCompany).Where(p =>
p.Name.Contains(Invoke(value(System.Func'1[System.String])))).OrderBy(p
=> p.Name)' into SQL and could not treat it as a local expression
。
答案 0 :(得分:4)
LINQ to SQL无法将您的字符串操作转换为SQL。从数据库中选择p.Name和p.Country,然后在单独的步骤中连接,如下所示:
var parentCompanies = (from p in context.ParentCompanies
where p.Name.Contains(e.Filter)
orderby p.Name
select new { p.Name, p.Country }).ToList();
var concatenated = (from c in parentCompanies
select new { Company = c.Name + "," + c.Country });
答案 1 :(得分:0)
尝试创建class
并继承ParentCompanies
public ParentCompaniesEntity : ParentCompanies
{
public string CompanyCountry {get; set;}
}
这就是如何使用。
var parentCompanies = (from p in context.ParentCompanies
where p.Name.Contains(e.Filter)
orderby p.Name
select new ParentCompaniesEntity()
{
CompanyCountry = p.Name + ", " + p.Country
}).ToList();