【C#】linq查询中对于检索条件的列可以通过外部参数指定吗
比如说有一个[student]的表,包含了ID,Name这类的字段示例查询如下:varquery=fromtinstudentwheret.ID==1001selectt...
比如说有一个[student]的表,包含了ID,Name这类的字段
示例查询如下:
var query = from t in student
where t.ID == 1001
select t.ID;
最后希望达到类似如下的效果:
where子句中的 t.ID可以替换成t.*(*可以通过类似于 输入 或者 参数传递 的方式指定)
【提问初衷其实是源于想将数据筛选操作设置成独立的方法,通过方法的参数指定出筛选条件】 展开
示例查询如下:
var query = from t in student
where t.ID == 1001
select t.ID;
最后希望达到类似如下的效果:
where子句中的 t.ID可以替换成t.*(*可以通过类似于 输入 或者 参数传递 的方式指定)
【提问初衷其实是源于想将数据筛选操作设置成独立的方法,通过方法的参数指定出筛选条件】 展开
1个回答
展开全部
上面的代码可以换成方法的形式查询,其本质是一样的
var query=student.Where(t=>t.ID==1001).Select(t=>t.ID);
.Where()方法里接收的参数类型是一个泛型方法Func<T,bool>,意思是,是接收一个查询类型,返回bool型的判断结果,前面的t=>t.ID=1001 lambda表达式其实就是定义了这样一个方法参数,当你明白之后,里面传递的条件只要满足这个条件都可以往里传,不仅可以写Lambda表达式,也可以传一个实实在实的方法,只要参数和返回类型符合要求即可~
如果之前没有仔细了解过这块,可以参考MSDN文档
var query=student.Where(t=>t.ID==1001).Select(t=>t.ID);
.Where()方法里接收的参数类型是一个泛型方法Func<T,bool>,意思是,是接收一个查询类型,返回bool型的判断结果,前面的t=>t.ID=1001 lambda表达式其实就是定义了这样一个方法参数,当你明白之后,里面传递的条件只要满足这个条件都可以往里传,不仅可以写Lambda表达式,也可以传一个实实在实的方法,只要参数和返回类型符合要求即可~
如果之前没有仔细了解过这块,可以参考MSDN文档
追问
lambda表达式不能把列当做参数传递啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询