小编典典

对 DataTable 的 LINQ 查询

all

我正在尝试对 DataTable 对象执行 LINQ 查询,但奇怪的是,我发现对 DataTables 执行此类查询并不简单。例如:

var results = from myRow in myDataTable
where results.Field("RowNo") == 1
select results;

这是不允许的。我怎样才能得到这样的工作?

我很惊讶数据表上不允许使用 LINQ 查询!


阅读 153

收藏
2022-02-28

共1个答案

小编典典

您不能查询DataTable‘s Rows 集合,因为DataRowCollection没有实现IEnumerable<T>.
您需要AsEnumerable()使用DataTable. 像这样:

var results = from myRow in myDataTable.AsEnumerable()
where myRow.Field<int>("RowNo") == 1
select myRow;

您需要添加对System.Data.DataSetExtensions的引用

AsEnumerable()返回IEnumerable<DataRow>。如果您需要转换IEnumerable<DataRow>DataTable,请使用CopyToDataTable()扩展名。

下面是使用 Lambda 表达式的查询,

var result = myDataTable
    .AsEnumerable()
    .Where(myRow => myRow.Field<int>("RowNo") == 1);
2022-02-28