我有一个数据库有很多不同的数据集。我想可以很容易地搜索不同的数据集,这取决于许多不同的参数,比如我现在有:智能方式通过数据访问层从数据库中获取数据?
public List<Dataset> GetAllDatasetsByMethod(Method method)
与此查询:
var datasets = from b in db.Method where b.Id == method.Id select b.Dataset;
,然后我有另一种方法看起来像这样:
public List<Dataset> GetAllDatasetsByTargetMaterial(TargetMaterial material)
和查询这样的:
var datasets = from b in db.Dataset
where b.TargetMaterial.Name.ToLower() == material.Name.ToLower()
select b;
我得到了很多这些方法(比如10-15),比较一个唯一的ID或名称上的醚。我需要做更多,但我开始觉得我重复自己,据我所知,DRY。那么有没有更聪明的方法来做到这一点?
我已经考虑过这样做,对于我来说问题是有时候多个条件必须是真实的(所以在同一时间找到所有材料名和id的例子)是不是会创建一个巨大的方法而不是很多if? – Sumsar1812
查询是可组合的,因此您只需在我的示例中删除else语句。因此,如果指定了ID,则添加id where子句,并且如果指定了材料名称,则还*将where子句添加名称。如果只有一个存在,则只为指定的唯一的那个添加where子句。直到你'.ToList()'它才会执行查询,所以你可以添加尽可能多的'query = query.Where(x => whatever)'子句。 – KallDrexx
你可以尝试编辑你的例子来证明这一点吗? – Sumsar1812