0

是否可以使用过滤器表达式来选择某些列?类似于select a,b,c from tablesql 的东西

这就是我想要做的

 Dim rows() As DataRow = bookedorders.Select("a,b,c")   'select columns a b c only, i know its wrong
        Dim zzz As DataTable = rows.CopyToDataTable

那么是否可以使用 Datatable.Select 来选择列并使用像 sql 这样的条件WHERE a=1

我的 linq 尝试是

Dim q = From r In bookedorders.AsEnumerable Select r.Field(Of Integer)("a") And r.Field(Of String)("b") And r.Field(Of String)("c") And r.Field(Of Integer)("d")
        For Each m In q
            zzz.Rows.Add(m)
        Next

这似乎不起作用,它说数组中的项目数比数据表长!

4

1 回答 1

1

DataTable.Select允许您将过滤器指定为String

bookedorders.Select("a = 1")

您不能指定要提取的列,因为这会破坏类型结构,因为它预计返回与DataRow您最初的相同。如果您只返回特定的列,则需要另一个DataTable来包含它们。

假设此功能存在,限制返回列的数量是不切实际的,因为您的DataRows 中已经填充了数据,不像select a,b,c from table,您可以通过仅指定要从数据库中提取的某些列来减少网络带宽并提高查询性能。

如果你想使用 LINQ,你可以这样做:

From r In bookedorders Select a=r.Field(Of Integer)("a"), b=r.Field(Of String)("b"), c=r.Field(Of String)("c"), d=r.Field(Of Integer)("d")

请注意,您不能使用此查询的结果直接.Add对 a 进行行DataTable,因为返回的枚举不是 type DataRow。如果您非常需要它,这里是MSDN 上的一个实现

于 2012-10-20T13:55:42.090 回答