如何在数据集上运行查询

本文关键字:运行 查询 数据集 | 更新日期: 2023-09-27 17:50:33

我有一个名为dsViewDataSet,其中包含数据。以下是我用来读取XML:的代码

dsView = new DataSet();
dsView.ReadXml(@"'c:MyXml.xml");

该数据具有一个名为MEN的表,该表具有字段FnameLname。如何在此dsView上运行查询?(例如:select * from MEN where Fname = 'zz'(

如何在数据集上运行查询

您不能在DataSet上运行完整的SQL语句,但DataSet中的DataTable确实有一个名为Select(string)的方法,它可以选择符合特定条件的DataRow对象数组。

查看DataTable 上的MSDN文档

你可能需要做一些类似(未经测试(的事情:

DataTable tblMEN = dsView.Tables["MEN"];
DataRow[] results = tblMen.Select("Fname = 'zz'");

我认为您不能在DataSet上运行SQL查询,因为它没有查询引擎。但是您可以尝试LINQ to DataSet。

此外,如果您只对数据(而不是DataSet的数据绑定属性(感兴趣,我建议您使用LINQ to XML来查询文档。

dsView.Table[0].DefaultView.RowFilter = "Fname = 'zz'";
// now default view contains the filtered rows
//ds.Table[0].DefaultView

有关msdn 上DefaultVeiw的更多信息

AFAIK您只能使用Select方法在DataTable上运行类似Sql的查询。

你会使用这种数据表的过载。选择这里可以做这样的事情:

DataRow[] foundRows = dsView.Table[0].Select("Fname = `zz`");

dsView.Table[0]应指向MEN的表,并且应具有Fname

有效的表达式与DataColumn表达式相同:
http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx

这里有一个我用来制作菜单的例子。

Dim dstpage As DataSet
dstpage = businessService.GetData()
Dim userTable As DataTable
userTable = dstpage.Tables(0)
If userTable.Rows.Count > 0 Then
   Dim results As DataRow()
   results = userTable.Select("PAGE_GROUP_NAME='People'")
   For i As Integer = 0 To results.Count - 1
       FilePath = userTable.Rows(i)("FILE_PATH").ToString()
       PageName = userTable.Rows(i)("PAGE_NAME").ToString()
   Next
End If
// Create a table of five different people.
    // ... Store their size and sex.
    DataTable table = new DataTable("Players");
    table.Columns.Add(new DataColumn("Size", typeof(int)));
    table.Columns.Add(new DataColumn("Sex", typeof(char)));
    table.Rows.Add(100, 'f');
    table.Rows.Add(235, 'f');
    table.Rows.Add(250, 'm');
    table.Rows.Add(310, 'm');
    table.Rows.Add(150, 'm');
    // Search for people above a certain size.
    // ... Require certain sex.
    DataRow[] result = table.Select("Size >= 230 AND Sex = 'm'");
    foreach (DataRow row in result)
    {
        Console.WriteLine("{0}, {1}", row[0], row[1]);
    }

你可以使用这个代码。我希望它能帮助你。