C#,Linq,动态查询:用于过滤存储库外的动态查询的代码

时间:2010-03-23 06:12:42

标签: c# asp.net-mvc linq dynamicquery

如果您在存储库中执行此类操作:

IQueryable<CarClass> GetCars(string condition, params object[] values) {
    return db.Cars.Where(condition, values);
}

您可以在存储库外设置条件和值:

string condition = "CarMake == @Make";
object[] values = new string[] { Make = "Ford" };

var result = myRepo.GetCars( condition, values);

您如何使用动态查询对存储库外的结果进行排序?

return View( "myView", result.OrderBy("Price"));

不知何故,当数据从存储库退出时,我正在失去DynamicQuery性质。是的,我还没有弄清楚如何返回CarClass类型,你通常会选择新的Carclass {fieldName = m.fieldName,...}

1 个答案:

答案 0 :(得分:1)

动态查询需要:

  • 来源为IQueryable<T>(如果是IEnumerable<T>或类似内容,请在其上调用.AsQueryable()
  • 要在执行动态查询的代码中引用的额外dll
  • 适当的using指令将位于本地源文件的顶部

检查这三个,您应该可以添加.Where(condition).OrderBy(name)