【问题标题】:Query a DataSet using LINQ使用 LINQ 查询数据集
【发布时间】:2026-02-21 16:15:01
【问题描述】:

我有一个用 SQL 选择查询填充的数据集。然后,我需要使用 LINQ to DataSet 对此 DataSet 执行额外的查询以进一步过滤数据。然后我想将此 LINQ 结果与某些数据控件(Repeater 或 GridView)挂钩,但它运行得不是很好。

这是我迄今为止尝试过的:

Dim sql As String = "SELECT * from someTable"
Dim ds As New System.Data.DataSet()
ds = db_functions.DB_GetDS(sql) 'Helper function that returns a dataset, not important

Dim res = (From s In ds.Tables(0) Where s.Field(Of Date)("date") > Date.Today Select s).ToList

GridView1.DataSource = res
GridView1.DataBind()

当我使用 GridView 运行页面时,有一个 GridView 有一行和两个字段 - RowError 和 HasRows,并且行中没有数据。在此示例中,一行将是正确的数字,因此 where 子句似乎被正确评估。但是为什么没有数据呢?

如果我使用中继器,页面是空白的。

有什么想法吗?

【问题讨论】:

  • 尝试直接绑定DataSet并告知结果
  • 使用 DataSet 作为 DataSource 从 SQL Query 中产生预期的结果,所以数据是存在的......以前从未尝试过这个 Linq to DataSet - 有趣......

标签: linq-to-dataset


【解决方案1】:

--编辑--

我不确定 Vb 语法和所有内容,但您的问题似乎是您没有针对好的元素运行 LINQ 查询... 我会替换

Dim res = (From s In ds.Tables(0) Where s.Field(Of Date)("date") > Date.Today Select s).ToList

Dim res = (From r In ds.Tables(0).Rows Where r("date") > Date.Today Select r)

那么您的数据源实际上是IEnumerable<DataRow>

【讨论】:

  • 如果还是不行,我们就得等真正的VB开发者了;)
  • 试过但结果相同。我正在考虑创建一个新的 DataTable,然后遍历 DataSet 并为每一行运行 LINQ 并将结果添加到这个新的 DataTable 中。不过,还没有那么幸运。得到很多铸造错误。欢迎提出想法。到目前为止,谢谢你们......