相关疑难解决方法(0)

如何根据实体输入参数过滤IEnumerable

我正在使用现在的实体框架 - 但它是所有ORM甚至IEnumerable之间"共享"的问题.

假设我在MVC中有一个方法如下:

[HttpPost]
public ActionResult Foo(FooModel model)
{
    var context = new Context(); -- The EF session
    var data = context.Foo.Where(???).ToList();
    return View(data);
}
Run Code Online (Sandbox Code Playgroud)

我想根据输入参数查询上下文,如:

var data = context.Foo.Where(x => x.Date == model.Date &&
                             x.Name == model.Name &&
                             x.ItemCode = model.ItemCode).ToList();
Run Code Online (Sandbox Code Playgroud)

但它比这更复杂,因为如果上面的一个参数(Date\ Name\ ItemCode)为null,我不想将它包含在查询中.
如果我硬编码它可能看起来像这样:

var query =  context.Foo;

if (model.Date != null)
    query =query.Where(x => x.Date == model.Date);

if (model.ItemCode != null)
    query =query.Where(x => x.ItemCode == model.ItemCode);
...
Run Code Online (Sandbox Code Playgroud)

必须有一种比这更简单的方法.
我需要一种方法来生成Expression<T, bool> …

.net c# nhibernate asp.net-mvc entity-framework

6
推荐指数
2
解决办法
1559
查看次数

标签 统计

.net ×1

asp.net-mvc ×1

c# ×1

entity-framework ×1

nhibernate ×1