Динамический предикат с Entity Framework - PullRequest
0 голосов
/ 14 октября 2010

Я пытаюсь создать динамический предикат с помощью Entity Framework, сопоставляя перечисление с полем столбца:

В предложении где я ввел ??так как я не уверен, что поместить туда, я хочу, чтобы это было динамически, как в этой статье, хотя это не работает для меня в EF; y linq to sql:

Как указать динамическое полеимена в предложении Linq where?

Например:

У меня есть перечисление:

public enum SearchTypes {

  FirstName = CustFName,
  LastName = CustLName

}

Мой метод такой:

private static IEnumerable<CustomerSearchInfo> GetCustomers(String customerName, SearchType searchType)
    {
        using (var context = new NewgenEntities())
        {
            return context.tblCustomers.Where(??).
            Select(p => new CustomerSearchInfo
                            {
                                FirstName = p.CustFName,
                                LastName = p.CustLName,
                                Id = p.CustID,
                                EmailAddress = p.CustEmail,
                                Mobile = p.CustMNumber,
                                Phone = p.CustPNumber
                            }).ToList();
        }

У кого-нибудь есть способ построить выражение на основе перечисления?

1 Ответ

1 голос
/ 14 октября 2010

Проверьте этот пост для использования перечислений с EF.Это многое пережить, но это работает.

Другой подход заключается в создании 1 свойства, которое является перечислением (назовем его SearchType), а затем другое целочисленное свойство с именем SearchTypeId.Свойство enum инкапсулирует свойство Id следующим образом:

public SearchType SearchType
{
    get
    {
        return (SearchType)this.SearchTypeId;
    }

    set
    {
        this.SearchTypeId = (int)value;
    }
}

Да, это тоже некрасиво, но работает.

В следующей версии EF онобудет поддерживать перечисления, но это, очевидно, не делает вас слишком много кода прямо сейчас.

...