1
我需要使用LINQ來構建一種使用子查詢的奇怪查詢。更多LINQY-ness(子選擇)
我真的在尋找不同的記錄。通常情況下,SQL是這樣的:
select distinct col1, col2 from foo where col3 = somevalue
然而,COL2恰好是一個BLOB,所以我不能用不同。所以,我認爲,未來最好的SQL是這樣的:
select f1.col1, f1.col2
from foo f1 where f1.id in
(select distinct f2.id from foo f2 where f2.col3 = somevalue
我不知道什麼是最好的辦法「短語」在LINQ是第二個查詢。這裏是我到目前爲止,它的作品,但我不知道它是否是最優的:
var query = from f in foo
where f.col3 == somevalue
select new {id = f.id};
var result = from f in foo
join q in query on f.id equals q.id
select new MyType() {col1 = f.col1, col2 = f.col2};
這給了我我想要的,但根據SQL管理器,生成的查詢約爲8%更昂貴而不是我手工製作的SQL子查詢。有沒有更好的方式來寫這個?
這聽起來像你想做些什麼,但你不知道,你可以做,所以你問了些別的事情的問題 - 是你想要問你如何選擇col1和col2上,但只跑與col1不同?這是可能的。 – 2011-05-31 22:28:54
@尼克:是的,這將解決問題。 – JMarsch 2011-05-31 22:44:46