通用数据库Linq

时间:2009-12-07 12:15:17

标签: linq generics lambda expression

给定如下函数,我可以从我的数据库中获取一个表,并使用Where扩展方法编写一个lambda,并使用一个简单的包装器方法并提供过滤器来构建所有其他情况。

  public void getPeople(Expression<Func<tblPeople, bool>> filter, Action<List<tblPeople>> callback)
            {
                var query = from People in sdContext.tblPeople.Where(filter)
                            select People;


                var DSQuery = (DataServiceQuery<tblPeople>)query;
                DSQuery.BeginExecute(result =>
                {
                    callback(DSQuery.EndExecute(result).ToList<tblPeople>());

                }, null);
            }

我现在真正想做的是编写一个更通用的方法,将tblPeople抽象为参数。这样我可以为我的所有调用设置一个行方法,至少是那些提供列表的方法!我该怎么做并建立:

 public void getTable<T>(Expression<Func<T, bool>> filter, Action<List<T>> callback)
            {
                var query = from DB in sdContext.T.Where(filter)
                            select DB;


                var DSQuery = (DataServiceQuery<T>)query;
                DSQuery.BeginExecute(result =>
                {
                    callback(DSQuery.EndExecute(result).ToList<T>());

                }, null);
            }

这可能!

1 个答案:

答案 0 :(得分:0)

这可能有用......

public void getTable<T>(Expression<Func<T, bool>> filter, Action<List<T>> callback)
{
    var query = from DB in sdContext.GetTable<T>.Where(filter)
                select DB;


    var DSQuery = (DataServiceQuery<T>)query;
    DSQuery.BeginExecute(result =>
    {
        callback(DSQuery.EndExecute(result).ToList<T>());
    }, null);
}