我问过如何使用'IN'here.
到目前为止,这个SQL Server查询:
select *
from table
where column1 in
(
select column2
from table
)
可翻译为:
table.Select(
string.Format("column1 in ({0})",
string.Join(",", table Rows.OfType<DataRow>()
.Select(r=>r["column2"].ToString())
.Distinct())));
我的问题是如何翻译这个SQL查询:
select column3
from table
where column1 in
(
select column2
from table
)
这样我就可以在另一个'IN'上使用column3里面的内容。
(例如)
select columnA
from table2
where columnB in
(
select column3
from table1
where column1 in
(
select column2
from table1
)
)
答案 0 :(得分:0)
Linq是一个工具。它有其优势和局限性。
我要做的是使用自定义查询来完成此任务。让SQL Server在这里首当其冲,而不是Linq。它也会大大提高性能。
var sqlTxt = "select columnA " +
"from table2 " +
"where columnB in " +
"( select column3 " +
" from table1 " +
" where column1 in " +
"(select column2 " +
"from table1) " +
")"
results = ExecuteQuery(sqlTxt);