我有一個數據庫有很多不同的數據集。我想可以很容易地搜索不同的數據集,這取決於許多不同的參數,比如我現在有:智能方式通過數據訪問層從數據庫中獲取數據?
public List<Dataset> GetAllDatasetsByMethod(Method method)
與此查詢:
var datasets = from b in db.Method where b.Id == method.Id select b.Dataset;
,然後我有另一種方法看起來像這樣:
public List<Dataset> GetAllDatasetsByTargetMaterial(TargetMaterial material)
和查詢這樣的:
var datasets = from b in db.Dataset
where b.TargetMaterial.Name.ToLower() == material.Name.ToLower()
select b;
我得到了很多這些方法(比如10-15),比較一個唯一的ID或名稱上的醚。我需要做更多,但我開始覺得我重複自己,據我所知,DRY。那麼有沒有更聰明的方法來做到這一點?
我已經考慮過這樣做,對於我來說問題是有時候多個條件必須是真實的(所以在同一時間找到所有材料名和id的例子)是不是會創建一個巨大的方法而不是很多if? – Sumsar1812
查詢是可組合的,因此您只需在我的示例中刪除else語句。因此,如果指定了ID,則添加id where子句,並且如果指定了材料名稱,則還*將where子句添加名稱。如果只有一個存在,則只爲指定的唯一的那個添加where子句。直到你'.ToList()'它纔會執行查詢,所以你可以添加儘可能多的'query = query.Where(x => whatever)'子句。 – KallDrexx
你可以嘗試編輯你的例子來證明這一點嗎? – Sumsar1812