gpt4 book ai didi

c# - 多条件验证有没有更优雅的方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:18 24 4
gpt4 key购买 nike

案例:
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 等等。

最佳答案

我会创建一个数组:

private static const int N = 13;

public string[] Data = new string[N];
public List<string>[] Filter = new List<string>[N];
//------------------------------------------------------------------------------
for(int i = 0; i < N; i++)
{
if(filter.Filter[i] != null && filter.Filter[i].Any()) {
data = data.Where(x => filter.Filter[i].Contains(x.Data[i]));
}

关于c# - 多条件验证有没有更优雅的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18104955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com