sql "not in" 在 Linq 中使用数据表
sql "not in" in Linq using datatable
如何使用数据表将 sql 查询转换为 linq。
select DISTINCT targeturl from internal where TargetURL NOT in (select DISTINCT url from Internal)
使用此查询,但仍然没有得到正确的结果。
var List1 = dt.AsEnumerable().Select(c => c.Field<string>("URL")).Distinct().ToList();
var List2 = dt.AsEnumerable().Select(c => c.Field<string>("TargetURL")).Distinct().ToList();
var Targetname = List2.Except(List1.ToList()).ToList();
我更喜欢分开
第一个
dim query = (from u in Internal select u.url).distinct
第二
dim tmp = (from t in Interal where not query.contains(TargetURL) select TargetURL ).ToList
它在 VB.net 但您可以轻松翻译
你也可以根据要求区分不同的组。
要在 linq lambda 表达式中写入 SELECT DISTINCT targeturl from internal where TargetURL NOT in (select DISTINCT url from Internal)
,您可以使用以下内容:
var result = Internal
.Select(a => a.TargetURL)
.Where(a => !Internal.Select(i => i.url).Distinct().Contains(a.TargetURL));
或将其分解为:
var distinctUrls = Internal.Select(i => i.url).Distinct();
var result = Internal.Select(a => a.TargetUrl)
.Where(a => !disctinctUrls.Contains(a.TargetUrl));
上面创建了一个 URL 的 IEnumerable,我们将其用作 where 谓词中的排除项。
您也可以尝试填充一个对象,然后使用该对象填充数据table。
var data = Select(c => c.Field<string>("TargetURL")).Distinct().ToList();
Datatable dtMyTable = new Datatable();
dtMytable.Columns.Add("col1",typeof(string));
dtMytable.Columns.Add("col2",typeof(string));
dtMytable.Columns.Add("col3",typeof(string));
然后填充 table
foreach (var item in data)
{
dtMytable.Rows.Add(data.col1,data.col2,data.col3);
}
如何使用数据表将 sql 查询转换为 linq。
select DISTINCT targeturl from internal where TargetURL NOT in (select DISTINCT url from Internal)
使用此查询,但仍然没有得到正确的结果。
var List1 = dt.AsEnumerable().Select(c => c.Field<string>("URL")).Distinct().ToList();
var List2 = dt.AsEnumerable().Select(c => c.Field<string>("TargetURL")).Distinct().ToList();
var Targetname = List2.Except(List1.ToList()).ToList();
我更喜欢分开 第一个
dim query = (from u in Internal select u.url).distinct
第二
dim tmp = (from t in Interal where not query.contains(TargetURL) select TargetURL ).ToList
它在 VB.net 但您可以轻松翻译 你也可以根据要求区分不同的组。
要在 linq lambda 表达式中写入 SELECT DISTINCT targeturl from internal where TargetURL NOT in (select DISTINCT url from Internal)
,您可以使用以下内容:
var result = Internal
.Select(a => a.TargetURL)
.Where(a => !Internal.Select(i => i.url).Distinct().Contains(a.TargetURL));
或将其分解为:
var distinctUrls = Internal.Select(i => i.url).Distinct();
var result = Internal.Select(a => a.TargetUrl)
.Where(a => !disctinctUrls.Contains(a.TargetUrl));
上面创建了一个 URL 的 IEnumerable,我们将其用作 where 谓词中的排除项。
您也可以尝试填充一个对象,然后使用该对象填充数据table。
var data = Select(c => c.Field<string>("TargetURL")).Distinct().ToList();
Datatable dtMyTable = new Datatable();
dtMytable.Columns.Add("col1",typeof(string));
dtMytable.Columns.Add("col2",typeof(string));
dtMytable.Columns.Add("col3",typeof(string));
然后填充 table
foreach (var item in data)
{
dtMytable.Rows.Add(data.col1,data.col2,data.col3);
}