首页 > C# > 对 DataTable 对象执行 LINQ 查询,数据表上不允许 LINQ 查询!

对 DataTable 对象执行 LINQ 查询,数据表上不允许 LINQ 查询!

上一篇 下一篇

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

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

这是不允许的。我如何让这样的东西工作?

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

分割线

网友回答:

var results = from DataRow myRow in myDataTable.Rows
    where (int)myRow["RowNo"] == 1
    select myRow

分割线

网友回答:

这并不是说它们在 DataTable 上是故意不允许的,只是 DataTables 早于可以执行 Linq 查询的 IQueryable 和泛型 IEnumerable 构造。

这两个接口都需要某种排序类型安全验证。数据表不是强类型。例如,这与人们无法查询 ArrayList 的原因相同。

要使 Linq 正常工作,您需要将结果映射到类型安全对象,并改为针对该对象进行查询。

分割线

网友回答:

您无法查询 的 Rows 集合,因为 未实现 。您需要将扩展名用于 。这样:DataTableDataRowCollectionIEnumerable<T>AsEnumerable()DataTable

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

正如@Keith所说,您需要添加对System.Data.DataSetExtensions的引用。

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

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

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

模板简介:该模板名称为【对 DataTable 对象执行 LINQ 查询,数据表上不允许 LINQ 查询!】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 234次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-20
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
企业网站 html5 微信文章 微信图片 自适应 微信公众平台 单页式简历模板 微信模板 响应式 微信素材
您可能会喜欢的其他模板