0

我在我的数据访问层中使用实体框架,我需要支持通过 UI(例如(Name == "John" AND Age > 25).TOP(100).ORDERBY(LastName))构建动态查询。

我打算用来QueryBuilder创建动态查询。为此,我正在考虑创建如下结构:

  1. 我的业务实体层中的一个FilterCondition类,它可以包含Name is equal to John.
  2. 某处FilterConditionsToQuery类,它使用 将 a 转换为查询。List<FilterCondition>QueryBuilder

我应该在数据访问层中创建FilterConditionsToQuery类并在我的 UI 层中直接引用它,还是应该创建一个存储库?对于 MVVM WPF 应用程序来说,什么是更好的方法?

4

1 回答 1

0

如果您愿意,可以使用 func 委托来实现。第一个func参数是where子句,第二个是top参数,第三个是orderby子句

程序.cs

 var dal = new DataAccessLayer();
 var result = dal.Get(x => x.Age > 40, 5, x2 => x2.Firstname);
 //var result = dal.Get(x => x.Age > 40 && x.Firstname == "Dave", 5, x2 => x2.Firstname);

数据访问层.cs

public IEnumerable<Student> Get(Func<Student, bool> expr, int top, Func<Student, object> orderBy )
{
    var list = GetStudents();
    return list.Where(expr).Take(top).OrderBy(orderBy);
}
于 2013-05-09T10:53:14.347 回答