我会在这篇文章的开头说,作为一名C开发人员,我是第8天。
对于我正在处理的项目中的许多域模型,我需要能够根据用户在审阅/搜索表单中提交的内容筛选表中的所有记录。
目前2美分的短途旅行是:
表格提交给FOOController/审查。
review然后将所有键/值对从params['filter']抓取到字典中,并将其传递给一个名为foofinder.byproperties的助手类,该类看起来非常类似于:
public IQueryable<WorkPlan> ByProperties( IDictionary<string, string> properties)
{
var result = ForSite(Convert.ToInt64(properties.DefaultVal("SiteId", "0")));
v);
if(properties.ContainsKeyAndIsNotNullOrEmpty("WorkPlan.Key"))
{
var tempVal = Convert.ToInt64(properties["WorkPlan.Key"]);
result = result.Where(r => r.Id == tempVal);
}
return result;
}
我想尽量减少表示代码,并尝试类似的方法
result = ByProperty(properties, "WorkPlan.key", typeof (Int64), r, v => r.id == v);
但这显然不会奏效,原因很多…不过,我想实现的目标仍然存在。我真的想通过使用某种动态助手/实用程序来简化代码并加速过滤过程。
我尝试的另一个想法是使用反射和那个孩子的作品进行直接比较,但是接下来如何检查像CreatedTime属性这样的东西,我希望所有记录都更大,然后“r=>CreatedDateTime>CreatedFrom”。
如果这些都不合理,请发表评论,我会努力解决任何问题。