C# LINQ OR条件查询

1、数据库查询
C# 全选
var query = dbContext.AttendanceRecords.AsQueryable();
// 日期、人员等基础条件先写这里
//query = query.Where(t => t.BeginDate >= start && t.EndDate <= end);
// 异常考勤 OR 筛选
List<Expression<Func<AttendanceRecord, bool>>> filters = new List<Expression<Func<AttendanceRecord, bool>>>();
if (chkLate) filters.Add(x => x.IsLate);
if (chkEarly) filters.Add(x => x.IsEarlyLeave);
if (chkLeave) filters.Add(x => x.IsLeave);
if (chkAbsent) filters.Add(x => x.IsAbsent);
// 拼接OR条件
if (filters.Any())
{
Expression combined = filters[0].Body;
ParameterExpression param = filters[0].Parameters[0];
for (int i = 1; i < filters.Count; i++)
{
combined = Expression.OrElse(combined, filters[i].Body);
}
var whereExpr = Expression.Lambda<Func<AttendanceRecord, bool>>(combined, param);
query = query.Where(whereExpr);
}
var list = query.ToList();
2、本地内存查询
C# 全选
//本地内存查询
//复选框:迟到、早退、请假、缺勤
if (input.IsLater || input.IsEarly || input.IsLeave || input.IsMissing)
{
q = q.Where(x => false
|| (input.IsLater && x.LateMinute > 0)
|| (input.IsEarly && x.EarlyMinute > 0)
|| (input.IsLeave && x.LeaveMinute > 0)
|| (input.IsMissing && x.MissingTimes > 0)
);
}
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网





