案例:
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));
}
所以有 13if
和 13 基本相同的过滤逻辑。这段代码看起来很可怕。有什么方法可以制作更漂亮的滤镜吗?
补充: Filter1 只能应用于 Data1 等等。