C# 如何在C中的数组上使用Select函数从datatable获取DataRow对象

C# 如何在C中的数组上使用Select函数从datatable获取DataRow对象,c#,select,datatable,datarow,C#,Select,Datatable,Datarow,我试图使用列表过滤的select函数作为一个值 如果dt_old是一个datatable,CFKEY是dt_old的一列,那么这个语句使用Select作为一个特定的值,它可以正常工作 DataRow[] dt_oldDuplicateRow = dt_old.Select("CFKEY = '1'"); 我找不到使用select对基于其他datatable的数组或列表进行筛选的方法,我想这样做 DataColumn dc = dt_new.Columns["CFKEY"]; DataRow[]

我试图使用列表过滤的select函数作为一个值

如果dt_old是一个datatable,CFKEY是dt_old的一列,那么这个语句使用Select作为一个特定的值,它可以正常工作

DataRow[] dt_oldDuplicateRow = dt_old.Select("CFKEY = '1'");
我找不到使用select对基于其他datatable的数组或列表进行筛选的方法,我想这样做

DataColumn dc = dt_new.Columns["CFKEY"];
DataRow[] dt_oldDuplicateRow = dt_old.Select("CFKEY in " + dc );

其中,dt_new与st_old的格式相同。有什么想法吗?

您必须参考System.Data.DataSetExtensions并为datatable使用一个numerable

var results =  dt_old.AsEnumerable().Select()

检查此问题

我不确定钥匙列表是您选择的还是从dt_new获得的。反正


谢谢塞尔达,这正是我需要的

我的列表是从dt_new获得的,我稍微更改了您的代码

var list = dt_new.Rows.OfType<DataRow>()
                                .Select(dr => dr.Field<string>("CFKEY"))
                                .ToList();

DataRow[] dt_oldDuplicateRow = dt_old.Rows.OfType<DataRow>()
                                .Where(dr => list.Contains(dr["CFKEY"].ToString()))
                                .ToArray();
var list = dt_new.Rows.OfType<DataRow>()
                                .Select(dr => dr.Field<string>("CFKEY"))
                                .ToList();

DataRow[] dt_oldDuplicateRow = dt_old.Rows.OfType<DataRow>()
                                .Where(dr => list.Contains(dr["CFKEY"].ToString()))
                                .ToArray();