无法翻译该表达式。

4
from p in context.ParentCompanies
where p.Name.Contains(e.Filter)
orderby p.Name
select new { Company = p.Name + "," + p.Country  };

当我添加p.Country或任何其他属性时,上述的linq查询会失败。

异常:

无法将表达式'Table(ParentCompany).Where(p => p.Name.Contains(Invoke(value(System.Func'1[System.String])))).OrderBy(p => p.Name)'转换为SQL,并且无法将其视为本地表达式。


如果您从查询中删除“where”子句,异常会提示什么? - Dima
相同的异常发生。 - neo
2个回答

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 });

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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接