查找价值二维数组的VB.NET
我宣布我的数组:查找价值二维数组的VB.NET
Dim invoice_discountitems(100, 100) As String
设置值到数组:
For i As Int16 = 0 To data_set.Tables("discount_items").Rows.Count - 1 invoice_discountitems(i, 1) = data_set.Tables("discount_items").Rows(0).Item("item_code")
invoice_discountitems(i, 2) = data_set.Tables("discount_items").Rows(0).Item("discountitem_average")
Next
现在我试图找到一个值:
Dim res As String res = Array.IndexOf(invoice_discountitems, "FO1506")
MsgBox(res)
但是,我得到这个错误:(
"Only single dimension arrays are supported here"
回答:
这是一个根本错误的做法 - 对多种原因
- 您正在将所有数据点视为字符串
- 您没有充分利用数据库优化li柯指数
- 你将数据加载到内存中,你永远不会使用(至少诠释他的例子)
最好的方式做到这一点是使用LINQ到实体:
Dim Record = MyDBContext.Discount_Items.Where(function(x) x.ItemCode = "FO1506").Single Console.WriteLine(Record.discountitem_average);
如果您遇到了当前的数据访问层,您需要修改正在执行的SQL以仅返回您感兴趣的信息。没有更多信息,我无法提供体面的示例代码,但是您希望SQL最终看起来像这样...
SELECT itemcode, discountitem_average,
[Other fields],
FROM MyDatabase.M
编辑:澄清,有很多方法来访问数据库中的数据。我更喜欢的是LINQ-To-Entities(通过this tutorial查看)。
简而言之,您将新项目添加到您的项目并将其指向您的数据库。这成为你的“数据库上下文” - 它代表数据库,这就是你运行查询的方式。
项目 - >添加 - >新项...
选择ADO.Net Entity Data Model
(LINQ到实体几乎是相同的LINQ到SQL但最近的和更好的支持 - 使用单位,直到你知道其中的差别)
取名类似MyDBContext
出现提示时,选择“生成数据库”,并在你的数据库指向它。
值得注意的是,设计师利用数据库中的信息,如Foreign Key Constraints - 因此,数据库设计得越好,其创建的模型就越好。
然后,您在代码中引用它,如我的第一个示例中所示。
回答:
首先将IndexOf
返回int作为索引!
要获得字符串 尝试的指标:
Dim i As int Dim j As int
i = Array.IndexOf(invoice_discountitems.OfType(Of String)().ToArray(), "FO1506")
j = i MOD 100
i= i/100
MsgBox(i+" "+j)
(我使用C#,但我认为这是没有什么不同)
以上是 查找价值二维数组的VB.NET 的全部内容, 来源链接: utcz.com/qa/263329.html