Linq to EF搜索不以Letter开头的字符串

时间:2010-10-20 14:19:28

标签: linq entity-framework entity-framework-4

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

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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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))