在我的场景中,我想用用户选择的列名查询一个表。所以每次where
条件的列名都会改变,所以我试图用lambda
.
我完全不知道该怎么做,请帮我解决这个问题。或者建议是否有其他方法可以做到这一点?
string[] criteria = searchCriteria.Split('_');
var columnName = criteria[0];
var columnValue = criteria[1];
var subQry = (from e in ctx.tblEmployee
where (e.DateOfJoining <= startDate || (e.DateOfJoining.Value.Month == ApplyMonth && e.DateOfJoining.Value.Year == ApplyYear)) &&
monInputEmployee.Contains(e.Id) == flag
select new
{
e.Id,
e.Code,
e.FName,
e.DateOfJoining
}).ToList();
var eParam = Expression.Parameter(typeof(EmployeeDetail), "e");
var comparison = Expression.And(
Expression.Equal(Expression.Property(eParam, columnName), Expression.Constant(columnValue)),
Expression.Equal(Expression.Property(eParam, "CompId"), Expression.Constant(compId)));
var lambda = Expression.Lambda<Func<EmployeeDetail, bool>>(comparison, eParam);
var mainQry = subQry.Where(lambda);