C# LINQ Group by-LINQ to实体无法识别方法';char get_chars(int32)方法
我正在用字母写这个LINQ to group product name,但遇到了这个错误:LINQ to entities无法识别方法“char get_chars(int32)”方法 我使用的数据库是Microsoft Northwind示例数据库。我正在使用EDMX。在db中,C# LINQ Group by-LINQ to实体无法识别方法';char get_chars(int32)方法,c#,linq,C#,Linq,我正在用字母写这个LINQ to group product name,但遇到了这个错误:LINQ to entities无法识别方法“char get_chars(int32)”方法 我使用的数据库是Microsoft Northwind示例数据库。我正在使用EDMX。在db中,ProductName的数据类型是nvarchar,而在Product类中,ProductName是string数据类型 如果我把代码改为下面,我可以把所有的信都打印出来 var output = (from p in
ProductName
的数据类型是nvarchar
,而在Product
类中,ProductName
是string
数据类型
如果我把代码改为下面,我可以把所有的信都打印出来
var output = (from p in db.Products
group p by p.ProductName);
foreach (var prod in output)
{
Console.WriteLine(prod.Key[0]);
// second foreach loop later.
}
实体框架不知道如何将字符索引器转换为有效的SQL。相反,您可以使用
string.Substring
,例如:
var output = (from p in db.Products
group p by p.ProductName.Substring(0, 1));
请按p.ProductName.Substring(0,1)尝试
groupp
噢,就是这样。非常感谢。如果您的产品名称为empty@HaraldCoppoolse不会的。这是实体框架,意味着它将被转换为使用SQL子字符串
函数的SQL查询,并将返回一个null
而不是异常。
var output = (from p in db.Products
group p by p.ProductName.Substring(0, 1));