【发布时间】:2021-08-08 10:39:33
【问题描述】:
我正在处理一个场景,我想在 linq 表达式中动态应用比较运算符 (==,>=,。
例子-
相等:
var filterData = data.Where(x => x.Exam.Where(y => y.ExamId ==examId)).Select(e=>e);
大于或等于:
var filterData = data.Where(x => x.Exam.Where(y => y.ExamId >=examId))
.Select(e=>e);
小于或等于:
var filterData = data.Where(x => x.Exam.Where(y => y.ExamId examId))
.Select(e=>e)
不等于:
var filterData = data.Where(x => x.Exam.Where(y => y.ExamId !=examId)).Select(e=>e);
如何将所有这些逻辑组合在单个语句(查询)中,而不是为每个比较运算符编写单独的语句(查询)。
用户将比较运算符作为参数传递,并在此基础上以动态方式生成 linq where 子句查询....
提前谢谢...
【问题讨论】:
-
我怀疑
switch声明是您最初的最佳选择。 -
@mjwills - 我正在寻找一个不需要多次写入条件的解决方案
-
或许你可以使用这个:stackoverflow.com/questions/1190062/…
-
然后您必须从属性、运算符和变量构建表达式。有很多例子可以做到这一点。
-
您确实需要添加类的相关部分。 Data.Exam 是对象还是列表?等
标签: c# linq lambda linq-to-entities