我正在使用VB.NET中的外部访问数据库(.accdb),我试图限制我的[Winforms]程序ping数据的次数,因为它大大减慢了它的速度。我想我可以通过查询我的内存数据集而不是连续回到数据库本身来做到这一点。不幸的是,我似乎无法弄清楚如何查询我的内存数据集。我试过查找LINQ,但找不到任何关于如何设置它的说明。
我错过了什么吗?有一个更好的方法吗?
非常感谢!我在下面的开始代码......
locsql = "SELECT * FROM TABLE1)
Dim objAdapter As New OleDb.OleDbDataAdapter(locsql, objconn)
objAdapter.Fill(locdata, "BASE")
所以我可以轻松地用locdata("BASE").rows.item("Item")
做一些基本的事情,但我必须做一些像
SELECT thing FROM TABLE1 WHERE this = this and that = that
如果可能的话,我宁愿不再回到数据库。
有可能吗?
答案 0 :(得分:2)
您需要在要查询的每个数据表上使用Select
方法。语法与普通SQL查询中WHERE子句之后的部分非常相似。 IE
locdata.tables(0).Select("ID = 47")
这将返回一个数据行数组。
答案 1 :(得分:1)
如果要对数据表使用Linq,则需要应用AsEnumerable方法,然后应用常用的Linq方法。
例如。
如果您需要查找字段Country
等于“加拿大”的所有客户,然后将您可以编写的Amount
列的总和相加
Dim listOfCanadians = locdata.Tables(0).AsEnumerable() _
.Where(Function(row) row.Field(Of String)("Country") = "Canada") _
.ToList()
Dim totalCanadaAmount = listOfCanadians.Sum(Function(row) row.Field(Of Decimal)("Amount"))
答案 2 :(得分:0)
我最终做的是分解我的数据过滤器并基于一系列循环和if / else语句创建新表。所有这些反应都非常有用,似乎并没有为我需要的东西工作。谢谢大家!