2009-12-07 2 views
1

При использовании функции, как показано ниже, я могу взять одну таблицу из своей базы данных и написать lambda, используя метод расширения Where, и в значительной степени собрать все остальные случаи, используя простой метод обертки и поставку фильтра.Generic Database Linq

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); 
      } 

Возможно ли это!

ответ

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); 
} 
+0

Я должен уточнить, что я использую ADO.NET DataServices, и я не думаю, что это GetTable метод доступен в SilverLight клиентской библиотеки. Это почти то, что я искал! – DavidA

Смежные вопросы