查找价值二维数组的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

回到顶部