【发布时间】:2013-08-08 22:07:58
【问题描述】:
案例:
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,你在哪里找到了一个过滤器类?只有
Filter[n]名称的属性。 -
当然,但是你写了“在服务器端我有这个类来获取过滤器”所以我认为
filter是来自过滤器的对象,因此我问你是否可以修改这个类 -
@WiiMaxx,是的,我可以修改它。