我正在使用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查询正常工作。我怎么能绕过这个?
答案 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))