您可以使用Linq-To-DataSet
这是最强大的方式(不是在效率方面,但在可读性和可维护性方面)查询DataSet
。
了解更多:Querying Typed DataSets。
您可以选择在VS设计器上创建TableAdapter
或DataTable
。如果添加一个TableAdapter,VS也创建相应的DataTable。如果你只添加一个DataTable,你必须提供你自己的方式来填充它。 TableAdapters
类似于ADO.NET中的DataAdapter
。
所以,如果你已经创建了一个名为DataSet1
数据集,并添加它选择了一个名为tabData
表的TableAdapter,Visual Studio会自动创建一个名为tabDataDataTable
数据表和TableAdapter
命名tabDataTableAdapter
在命名空间DataSet1TableAdapters
。
所以你可以用这种方式填写此表:
var dataSet = new DataSet1();
var da = new DataSet1TableAdapters.tabDataTableAdapter();
da.Fill(dataSet.tabData);
假设表中的列Name
和Age
和你想找到的所有行名称与"Jon"
和年龄开始为> 30,你可以使用LINQ的Where
:
var jons = dataSet.tabData
.Where(r => r.Name.StartsWith("Jon") && r.Age > 30);
foreach (DataSet1.tabDataRow row in jons)
{
Console.WriteLine("{0} is {1} years old", row.Name, row.Age);
}
注意,您可以使用LINQ到数据集类型安全(r.Name
是一个字符串,r.Age
一个int)。
是否有任何理由不能在tableadapter中使用参数查询来定位所需的行,而不是先拉动所有数据然后再找到它? – peterG