c# - EF 中的多个 where 条件

标签 c# asp.net linq entity-framework

<分区>

Possible Duplicate:
Conditional Linq Queries

使用 Entity Framework 4.0

我有这样的搜索条件

enter image description here

有四个字段允许用户过滤他们的搜索。条件都是AND。如果文本框值为 String.Empty 或下拉列表值为 All,则结果必须省略相应的过滤器。可以在存储过程中执行此操作,但我无法在 Linq2SQL/ Entity Framework 场景中完全模仿。

我的问题是,如何根据某些输入值在 Linq 中省略 IEnumerable.Where?

最佳答案

您可以链接您的 where 子句。您只需要一个 IQueryable 数据源。

var filteredData = _repository.GetAll();
//If your data source is IEnumerable, just add .AsQueryable() to make it IQueryable

if(keyWordTextBox.Text!="")
    filteredData=filteredData.Where(m=>m.Keyword.Contains(keyWordTextBox.Text));

if(LocationDropDown.SelectedValue!="All")
    filteredData=filteredData.Where(m=>m.Location==LocationDropDown.SelectedValue));

... etc....

因为它是 IQueryable,所以在您绑定(bind)它之前不会获取数据,因此它只会提取您需要的数据。

关于c# - EF 中的多个 where 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6353350/

相关文章:

c# - LoggingSession.SaveToFileAsync 有时会创建以 .etl.tmp 结尾的文件

asp.net - 在asp.net webforms中创建独立于源代码的网站模板

c# - 更新键值对中Key的值

c# - 创建将由桌面应用程序和网站使用的对象模型时,我应该考虑哪些特殊注意事项?

C#:两种形式,一种是调用另一种

asp.net - Web.Config httpModules 内部服务器错误

asp.net - 服务器控制行为异常

c# - 使用 Linq 在对象集合上运行一个方法?

c# - 如何根据表达式 <T, K> 的结果将 List<K> 按 List<T> 分组?

c# - NHibernate 和 AutoMapper 不能正常运行 : "a different object with the same identifier value was already"