【问题标题】:sql "not in" in Linq using datatable使用数据表在 Linq 中 sql“不在”
【发布时间】:2015-02-11 09:01:12
【问题描述】:

如何使用数据表将 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();

【问题讨论】:

标签: sql linq linq-to-entities


【解决方案1】:

您也可以尝试填充一个对象,然后使用该对象填充数据表。

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

然后填充表格

foreach (var item in data)
{
      dtMytable.Rows.Add(data.col1,data.col2,data.col3);
}

【讨论】:

    【解决方案2】:

    我更喜欢分开 第一个

    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 中,但您可以轻松翻译 而且您可以按请求分组。

    【讨论】:

      【解决方案3】:

      要在 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));

      上面创建了一个 IEnumerable url,我们将其用作 where 谓词中的排除项。

      【讨论】:

      • 如何配合datatable使用?
      • 我正在使用这种方式,但仍然没有得到正确的结果。 var List1 = dt.AsEnumerable().Select(c => c.Field("URL")).Distinct().ToList(); var List2 = dt.AsEnumerable().Select(c => c.Field("TargetURL")).Distinct().ToList(); var Targetname = List2.Except(List1.ToList()).ToList();
      猜你喜欢
      • 2010-12-07
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2016-05-19
      • 1970-01-01
      相关资源
      最近更新 更多