【发布时间】:2019-10-15 01:31:13
【问题描述】:
我是使用 linq 的 c# 新手,我正在尝试弄清楚如何使用按钮进行多重过滤选择。
我已连接到数据库,
我有enum stats{approved, rejected, pending approval, pending rejected, cancelled};
一个IEnumerator 类型的列表,我该怎么做才能使代码更易于管理,因为将来可以继续添加 N 个选项,并且它仍然可以工作,而不是使用 if else or switch cases 硬编码所有可能的情况。
例如
if(stats contains approve)
List = List.dbset.where(x => x.id.stats == approved);
//return the view that displays all the list of things with stats approved.
我不确定如何将它组合成一个循环。需要一些帮助。
所需的输出是我可以选择 2 个或更多按钮,并且列表会返回那些选定的过滤器值元素。
【问题讨论】:
-
您可以创建一个按钮选择的值列表,然后在查询中使用该列表作为
List.dbset.where(x => choices.Containts(x.id.stats));这里choices是按钮选择的值的集合。 -
@Bonbon,如果你想管理
stats,首先不要使用enum。我建议创建另一个object(class)来定义您的stats属性。stats对象应该从包含所有统计信息的数据库中查询,并通过LINQ检索记录。例如IList<stats> statList = new List<stats>();您可以从statList object循环并在那里执行您的逻辑。 -
我试试看!谢谢!
-
@JKerny 我已经有了一些获取过滤器的方法,但不知道如何组合它们以使其灵活地选择任何数量的过滤按钮。我有一个包含统计信息的哈希集,我有一个应用程序列表列表,我可以简单地执行 x => x.stats.Equals(stats.cancelled) 之类的操作。
-
@RichardAnthonyHein 感谢您的建议,但加入模式不是我想要的。
标签: c# asp.net-mvc linq