如何在DataTable上使用多个“IN”

时间:2011-08-22 08:58:47

标签: c# sql-server

我问过如何使用'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
            )
    )

1 个答案:

答案 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);