SQL Where in to Linq with DataTable

Posted

技术标签:

【中文标题】SQL Where in to Linq with DataTable【英文标题】: 【发布时间】:2017-07-19 07:10:57 【问题描述】:

我正在尝试在 c# 中实现这一目标

Select a.Name,a.Param
from Customization a
where a.name in (select Name from Standard)

我已经尝试过类似的方法,但它仍然不起作用。

 merge = dt1.AsEnumerable()
            .Where(r => r.Field<string>("Name")
            .Contains(dt2.Rows.Contains("Name")))
            .CopyToDataTable();

【问题讨论】:

什么是 dt1 和 dt2?它们的结构如何? Dt1和Dt2是数据表 【参考方案1】:

通过使用当前的方式,我们需要从第二个数据表(dt2)中获取dt1中每一行的名称列表,所以我建议您先获取名称列表,然后检查r.Field&lt;string&gt;("Name")是否包含在集合中。为此,您可以使用以下代码

var NameCollection = dt2.AsEnumerable().Select(x=> x.Field<string>("Name")).ToList();

merge = dt1.AsEnumerable()
           .Where(r => NameCollection.Contains(r.Field<string>("Name")))
           .CopyToDataTable();

【讨论】:

我会在接受的冷却时间结束后接受它。再次非常感谢您!

以上是关于SQL Where in to Linq with DataTable的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to SQL语句之Where

LINQ to SQL语句之Where(抄的好)

Linq to Entities基础之需要熟知14个linq关键字(from,where,select,group,let,on,by...)

Linq to SQL 多个条件 where 子句

LINQ to SQL查询中的C#Dynamic WHERE子句

linq to sql select和where的区别