2017-05-15 6 views
2

私は関数にどこを渡すことができるように、私は抽象私IQueryable呼びたい:どのように右側の "Where"をC#のIQueryableインスタンスに渡すのですか?

何かのように:上記

public IQueryable<T> executeQuery<T>(T baseType, Expression<Func<T,object>> whereFunc) where T : class 
{ 
    //Get context 
    DataContext dbContext = new DataContext(connection); 

    //Get the table representation 
    Table<T> baseTable = dbContext.GetTable<T>(); 

    //Get our query object 
    IQueryable<T> baseQuery = from item in baseTable where whereFunc select item; 
} 

動作しませんが、これを行うにはいくつかの方法がありますか? (つまり、一般的にIQueryableを作成しますが、where句を渡すことができますか?)

答えて

2

whereFunc署名が間違っています。 Whereはフィルタなのでboolを返すべきであり、objectではありません。また、この場合、簡略化されたlinq構文は使用できません。これはうまくいくはずです:

public IQueryable<T> executeQuery<T>(T baseType, Expression<Func<T,bool>> whereFunc) where T : class 
{ 
    //Get context 
    DataContext dbContext = new DataContext(connection); 

    //Get the table representation 
    Table<T> baseTable = dbContext.GetTable<T>(); 

    //Get our query object 
    IQueryable<T> baseQuery = baseTable.Where(whereFunc); 
} 
関連する問題