2010-10-20 80 views
1

我正在使用Linq to Entity Framework 4,我试图做的是构建一个查询,查找所有不以字母开头的供应商实体,通常这些是数字,例如我认为这将是微不足道的,并写了这个“第一选择”:Linq to EF搜索不以字母开头的字符串

var letters = Enumerable.Range('A', 26).Select(x => (char)x); 
var results = from supplier in All() 
       where !letters.Contains(supplier.Name[0]) 
       select supplier; 

return results.ToList(); 

不幸失败,出现错误:

System.NotSupportedException` 
"Unable to create a constant value of type 'System.Char'. 
Only primitive types ('such as Int32, String, and Guid') are supported in this context." 

不快此相同的查询中LinqPad正常工作的LINQ to SQL的查询。我怎样才能解决这个问题?

回答

2

变化

var letters = Enumerable.Range('A', 26).Select(x => (char)x); 

var letters = Enumerable.Range('A', 26).Select(x => ((char)x).ToString()); 

而且

where !letters.Contains(supplier.Name[0]) 

where !letters.Contains(supplier.Name.Substring(0, 1)) 
3
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
var results = from supplier in All() 
       where !letters.Contains(supplier.Name.Substring(0, 1)) 
       select supplier; 
相关问题