我需要使用LINQ来构建一种使用子查询的奇怪查询。
我真的在寻找不同的记录。通常,SQL看起来像这样:
select distinct col1, col2 from foo where col3 = somevalue
但是,col2恰好是BLOB,所以我不能使用 distinct 。所以,我认为下一个最好的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 Manager,生成的查询比我手工制作的SQL子查询贵了8%。有没有更好的方法来写这个?
答案 0 :(得分:1)
你能试试吗?
var result = from f in foo
where query.Contains(f.id)
select new MyType() {col1 = f.col1, col2 = f.col2};