我在MS SQL中有这段代码:
select * from table where column1 in (select column2 from table)
如何使用DataTable进行翻译?
以下内容:table.select("column1 in column2")
答案 0 :(得分:2)
table.Select(string.Format("CITY in '{0}'",string.Join("','",table.Rows.OfType<DataRow>().Select(r=>r["COUNTRY"].ToString()).Distinct())))
说明: 假设你有一个非常简单的表
ID城市国家供参考:
如果您需要针对DataTables \ DataSet执行非常酷的SQL查询,您可以使用NQuery它非常快且符合标准。
答案 1 :(得分:1)
假设表位于同一个DataSet中,您可以向DataSet添加DataRelation
,然后使用GetChildRows()访问子行
var relation = new DataRelation("RelationName",
dataSet.Tables["Parent"].Columns["Column2"],
dataSet.Tables["Child"].Columns["Column1"]);
dataSet.Relations.Add(relation);
var childRows = from row in dataSet.Tables["Child"].Rows
where row.GetParentRows("RelationName").Length > 0;
答案 2 :(得分:1)
您可以使用以下LINQ to DataSets查询来获得与SQL中的查询相同的结果。
var rows = from r1 in table.AsEnumerable()
from r2 in table.AsEnumerable()
where r1.Field<string>("Column1") == r2.Field<string>("Column2")
select r1;
我假设您的示例中的列来自同一个表。如果没有,那么您只需要更改上面的表格,如下所示。
var rows = from r1 in table1.AsEnumerable()
from r2 in table2.AsEnumerable()
where r1.Field<string>("Column1") == r2.Field<string>("Column2")
select r1;
这类似于
select * from table1 where column1 in (select column2 from table2)