Linq动态传递数据库中某张表的列

本文探讨如何在Linq查询中动态传递数据库表的列作为参数,解决Linq不直接支持此功能的问题。通过引入System.Linq.Expressions命名空间,利用ParameterExpression定义类型和名称,实现动态参数传递的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些时候,我们需要将数据库中某张表的列作为参数,动态传入到linq中,但是在linq查询语句中并没有这样的功能,这个时候我们会很烦恼。接下来我将通过一下的例子来总结一下有关linq动态传递参数的问题

 

首先我们要引用命名空间

using System.Linq.Expressions;

我们的目标是动态传递参数,此时我们需要用到的ParameterExpression,用它来定义我们所需要的类型及相应的名称

如ParameterExpression para = Expression.Parameter(typeof(Categories), "c");

由于动态传递的参数可能会很多此时我们需要如下操作

List<ParameterExpression> paras = new List<ParameterExpression>();
List<Expression> expression = new List<Expression>();

foreach (var c in conditons)
    {
         Expression left = Expression.Property(para, typeof(Categories).GetProperty(c.Key));//这里获取的是列,所以我们需要通过反射获取数据表中的列
         Expression right = Expression.Constant(c.Value);//(创建关联)获取相应字段的值
         Expression ex = Expression.Equal(left, right);//放在一个对等条件中

         if (expression.Any())
              expression[0] = Expression.AndAlso(expression[0], ex);//这样做的目的是:当传入的列有多个时
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值