2011-04-20 44 views
2

我有一个名为dsViewDataSet包含数据。下面是我用来读取XML的代码:如何在数据集上运行查询?

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

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

+1

可能重复http://stackoverflow.com/questions/1939511/how-to-run-any-query-on-dataset – 2011-04-20 07:08:04

+1

应与该问题合并,因为这一个包含更好的答案。 – gideon 2011-04-20 07:16:18

回答

12

您不能运行在DataSet完整的SQL语句 - 但DataTableDataSet里面确实有一个叫Select(string)方法,选择DataRow对象的数组符合特定条件的。

退房的MSDN docs on DataTable

你可能不得不这样做(未经测试):

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

感谢您的帮助,现在如何从结果中读取该行? – Gali 2011-04-20 08:12:34

+0

@Gali:对“DataRow”数组做一个foreach - 这只是标准的ADO.NET .... – 2011-04-20 08:14:30

1

我不认为你可以在DataSet上运行SQL查询,因为它没有查询引擎。但你可以试试LINQ to DataSet。此外,如果您只对数据(而不是数据绑定属性DataSet)感兴趣,我建议您使用LINQ to XML来查询文档。

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

更多DefaultVeiw MSDN上

0

这里是我用来做菜单的例子。

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 
0
// 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]); 
    } 

您可以使用此code.i希望它帮助你。

相关问题