магазин Expression> где как свойство класса - PullRequest
1 голос
/ 05 декабря 2011

У меня есть класс, который расширяет элемент управления System.Web.UI.WebControls.GridView. Я хочу иметь свойство, которое может сохранить мое выражение EF для использования во всем элементе управления.

Проблема в том, что T не определено.

public sealed class NCGridView : GridView
{
    private Expression<Func<T, bool>> _where;

    public void LoadWhere(Expression<Func<T, bool>> where)
    {
        _where = where;
    }
}

Попытка предложения RedHat

    private Expression<Func<BaseModel, bool>> _where;

    public void LoadWhere<T>(Expression<Func<T, bool>> where) where T : BaseModel
    {
       // Cannot cast from: Expression<Func<T, bool>> to:  Expression<Func<BaseModel, bool>>
        _where = where;
    }

1 Ответ

1 голос
/ 05 декабря 2011

Ответ 2: Обновление:

public Expression<Func<BaseModel, bool>> LoadWhere<T>(Expression<Func<T, bool>> where) where T : BaseModel
{
    where = LambdaExpression.Lambda<Func<BaseModel, bool>>(where.Body,where.Parameters);
}

Ответ 1: Использование:

Expression<Func<object, bool>>

Поддерживается любой тип.

Пример:

Expression<Func<object, bool>> exp = p => ((Table1)p).Code == 1;
var a = new MyContext().Table1.Where(exp).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...