在 linq 中应用多个表达式 [英] Apply multiple expression in linq

查看:49
本文介绍了在 linq 中应用多个表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在不同情况下使用不同类型的滤波器.如何在LinQ中应用多个过滤器.

Having different kind of filter following used in different situation. How to apply more than 1 filter in a LinQ.

Expression<Func<data, bool>> filter =
                    bt => bt.condition1 == condition1;
Expression<Func<data, bool>> filter2 =
                    bt => bt.condition2 == condition2;
Expression<Func<data, bool>> filter3 =
                    bt => bt.condition3 == condition3;


var result = dataList.Where(filter1);
var result2 = dataList.Where(filter2, filter3); //Syntax error
var result3 = dataList.Where(filter2).Where(filter3); //Is this proper?
var result4 = dataList.Where(filter2 || filter3); //Syntax error

推荐答案

您只需为要应用的每个过滤器调用 .Where(filter).

You can simply call .Where(filter) for every filter that you want to apply.

您可以过滤 IEnumerable< T> .Where()再次返回,过滤出所需的所有元素.

You can filter the IEnumerable<T> that .Where() returns again, filtering out all elements that you want.

用法:

IEnumerable<someType> result = dataList.Where(filter1).Where(filter2).Where(filter3);

您还可以做的是将所有过滤条件都放在一个表达式中,而不是多个.

What you could do aswell is have all the filtering conditions in a single expression, instead of multiple ones.

这篇关于在 linq 中应用多个表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆