Я бы хотел сделать запрос к моей базе данных SQL Server 2008 R2, используя Linq-To-Entities.
Я использую Entity Framework 4.1 (Code-First)
запрос должен сравнить хэшированные значения сущностей с параметром следующим образом:
myContext.Messages.Where(m => HashCode(m.MessageId) % 10000 == myValue)
Но я могу использовать только методы расширения ядра и методы CLR, определенные для поставщика EF .
Поэтому я пытаюсь перевести мой метод HashCode()
на что-то, что L2E понимает непосредственно перед выполнением.
К вашему сведению, реализация HashCode не сложна. что-то вроде:
public int HashString(string text)
{
int hash = 23;
foreach (char c in text)
{
hash = hash * 31 + c;
}
return hash;
}
Я знаю, что могу извлечь все объекты как перечисляемые и проверить их в своем коде (Linq To Objects), но это будет катастрофой, учитывая количество данных, которые я собираюсь получить таким образом.
Возможно ли это вообще (для GetHashCode
метода). Если да, то как я могу это реализовать?
Спасибо.