2010-02-04 95 views
1

我有以下代碼在基類中。用多個Where子句創建亞音速動態查詢

 MyApp.MyDB = new MyApp.MyDB(); 
     IRepository<T> repo = new SubSonicRepository<T>(db); 
     CurrentTable = repo.GetTable(); 



     var s = db.SelectColumns(columnList.ToArray()). 
       From(CurrentTable.Name). 
       OrderAsc(CurrentTable.Descriptor.Name); 

這個想法是我所有的類都可以調用這個方法。

我剛剛意識到我可能需要'where'語句,並且可能有許多列名稱和值要測試。

這是最好的方法是什麼?

更新:我發現下面的工程,但它是最佳實踐?

//WhereClause is a Dictionary<string, string> 
     int count = 0; 
     foreach (var whereitem in WhereClause) 
     { 
      if (count == 0) 
      { 
       s.Where(whereitem.Key).IsEqualTo(whereitem.Value); 
      } 

      else 
      { 
       s.And(whereitem.Key).IsEqualTo(whereitem.Value); 
      } 

      count++; 
     } 

回答

1

這略微簡化的邏輯:對於where子句,做這樣的事情:

s.Where(1).IsEqualTo(1); 

對於所有其他whereitem的,你可以使用和的。