我有两种几乎完全相同的方法。唯一的dffernece是where子句(和方法名称)。我刚刚提供了一个简化的linq查询。
from tableA in db.tableA
join tableB in db.tableB on tableA.id equals tableB.id
where tableB.ref == "blah"
select tableA
和
from tableA in db.tableA
join tableB in db.tableB on tableA.id equals tableB.id
where tableB.refb == "blah"
select tableA
有没有办法可以改变?我知道我可以从查询中删除那里,然后在返回结果后使用.notation来过滤。 (可能需要做一些其他的事情来确保我需要从tableB返回的字段。)
有更好的方法吗?我有两个linq查询除了where之外几乎完全相同是否重要?
答案 0 :(得分:2)
是重构它
var data = from tableA in db.tableA
join tableB in db.tableB on tableA.id equals tableB.id
select tableA
var one = data.Where(x=>x.ref == "blah");
var two = data.Where(x=>x.refb == "blah");
通过这种方式,您可以在一个地方查询并过滤该主要查询
答案 1 :(得分:1)
除非性能受到关注,否则您可以保持现状。 这些看起来像简单的查询,重构它们会使代码的可读性降低。