【发布时间】:2015-04-13 19:01:44
【问题描述】:
情况
我有一个接收 POCO 的方法。这个POCO是这样的
private class SearchCriteria
{
public string name get;set;
public string age get;set;
public string talent get;set;
..
....
}
该方法基本上有一个对 db 的查询,它使用上述条件。
public void query(SearchCriteria crit)
{
if(crit.name!=null && crit.age!=null && crit.talent !=null)
{
dbContext.Students.Where(c=>c.name ==crit.name && c.age==crit.age...)
}
else if(crit.name !=null && crit.age!=null)
{
}
else if(....
{
}
正如你所看到的,上面有一个明确的问题,如果条件很多,我将不得不写很多 if-else 来从 where 子句中删除特定的参数。
可能的解决方案?
我实际上是 lambda 表达式世界的新手,但我相信我们必须有一个工具可以让我们执行以下操作。
dbContext.Students.Where(processCriteria(searchCriteriaPOCO)).
你们能把我引向正确的方向吗?谢谢
【问题讨论】:
-
如果任何答案充分解决了您的问题,请您选择它作为答案,或者如果您自己找到更好的方法,请将其作为答案发布。跨度>
标签: c# lambda entity-framework-4