Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ Group by-LINQ to实体无法识别方法';char get_chars(int32)方法_C#_Linq - Fatal编程技术网

C# LINQ Group by-LINQ to实体无法识别方法';char get_chars(int32)方法

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

我正在用字母写这个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 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));