dataRowFilter有什么作用?

时间:2014-11-08 00:25:09

标签: c# database vb.net

dataRowFilter有什么作用?它只是行的条件吗?因为在行过滤器中添加选择不起作用

代码是:

Dim strExpr = "ClientID>(select count(*) from Client)-10" (to select the last 10 records);

Dim dv = ds.Tables(0).DefaultView;

dv.RowFilter = strExpr;
Dim newDS = New DataSet();
Dim newDT = dv.ToTable();
newDS.Tables.Add(newDT);

但代码不起作用,如果我放入strExpr="ClientID>3"代码确实有效,那么RowFilter只是条件吗?因为我不能把选择放进去。

1 个答案:

答案 0 :(得分:0)

DataRowFilter属性用于过滤DataView中查看的行。该字符串在内部被解析为DataExpressions。在查看Expression类的DataColumn属性时,您将在MSDN上找到有关表达式语法的更多信息。相同的语法适用于SelectDataTable函数。

在这些LINQ次中,查询数据集/表非常简单。例如,如果您的客户端表的索引范围从 1 100 ,则以下代码将返回索引为的客户端31 40

Dim table As DataTable = (
    From row As DataRow
    In ds.Tables("Client")
    Let clientId As Int32 = row.Field(Of Int32)("ClientID")
    Where clientId > 30
    Order By clientId Ascending
    Select row
).Take(10).CopyToDataTable()

PS:同一个查询实际上可以写成一行:

Dim table As DataTable = (From row As DataRow In ds.Tables("Client") Let clientId As Int32 = row.Field(Of Int32)("ClientID") Where clientId > 30 Order By clientId Ascending Select row).Take(10).CopyToDataTable()