Просто вам не нужно этого делать, если вы сообщили LINQ-to-SQL о перечислении (вместо того, чтобы отображать его как int
и иметь отдельное свойство в C # что делает перевод). Например, отлично работает следующее:
var param = Expression.Parameter(typeof(DomainObject));
var body = Expression.Equal(Expression.Property(param, "SomeProperty"),
Expression.Constant(YourEnumType.SomeEnum));
var predicate = Expression.Lambda<Func<DomainObject, bool>>(body, param);
var count = db.Table.Where(predicate).Count();
Суть в том, что мое свойство SomeProperty
отображается в dbml на перечисление. Просто замените имя типа типом enum (включая пространство имен).
Точно так же вы должны указывать не 1, а типизированное перечисление; например:
Expression.Constant(Enum.ToObject(typeof(YourEnumType), 1))
(если все, что вы знаете, это 1
)