案例:
ASP.NET MVC,C#和ExtJS。用戶有一個過濾器,他可以在其中選擇多個值。有13個這樣的過濾器,用戶可以添加它們或從UI中刪除。是否有更多優雅的方法用於多重條件驗證
問題:
在服務器端我有這個類用於獲取過濾器值:
public List<string> Filter1 { get; set; }
public List<string> Filter2 { get; set; }
...
public List<string> Filter13 { get; set; }
然後我從數據庫中選擇數據,並將其轉換爲IEnumerable<DataClass>
其中DataClass
是看起來象下面這樣:
public string Data1 { get; set; }
public string Data2 { get; set; }
...
public string Data13 { get; set; }
然後我過濾此數據是這樣的:
if (filter.Filter1 != null && filter.Filter1.Any()) {
data = data.Where(x => filter.Filter1.Contains(x.Data1));
}
...
if (filter.Filter13 != null && filter.Filter13.Any()) {
data = data.Where(x => filter.Filter13.Contains(x.Data13));
}
所以有13 if
和13基本相同的過濾邏輯。這段代碼看起來很可怕。有什麼辦法可以製作更漂亮的過濾器嗎?
加: Filter1可以通過僅適用於Data1等。
你可以修改Filter類嗎? – WiiMaxx
@WiiMaxx,你在哪裏找到一個過濾器類?只有'Filter [n]'名稱的屬性。 – colotiline
當然,但你寫了「在服務器端,我有這個類獲取過濾器」,所以我認爲'過濾器'是一個過濾器的對象,因此我問你,如果你能夠修改這個類 – WiiMaxx