Linq to EF Поиск строки, которая не начинается с буквы - PullRequest
1 голос
/ 20 октября 2010

Я использую 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 ]

3 голосов
/ 20 октября 2010
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var results = from supplier in All()
              where !letters.Contains(supplier.Name.Substring(0, 1))
              select supplier;
2 голосов
/ 20 октября 2010

Изменить

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...