为for循环增加每个执行行的值 [英] Increment a value for every line of execution in for loop
问题描述
Hello Experts,
我有一个要求,我应该为每行执行增加J的值。
这是我的代码,但我想要比这更好的东西
Hello Experts,
I have a requirement where I should increment the value of J for each line of execution.
Here is my code, But I want something better than this
For i As Int16 = 0 To ds.Tables(0).Rows.Count - 1
' For J = 33 To i
pdfFormFields.SetField("untitled" + Convert.ToString(J), ds.Tables(0).Rows(i)("LIDOT").ToString())
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), ds.Tables(0).Rows(i)("LIPRODCO").ToString())
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), ds.Tables(0).Rows(i)("LITIRSIZ").ToString())
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), ds.Tables(0).Rows(i)("LITIRDPT").ToString())
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "replace price1")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), ds.Tables(0).Rows(i)("LIRR").ToString())
J += 1
If ds.Tables(0).Rows(i)("LIREMARE").ToString().ToUpper() = "BEAD" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LIREMARE").ToString().ToUpper() = "TREAD" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LIREMARE").ToString().ToUpper() = "SIDEWALK" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LIREMARE").ToString().ToUpper() = "OTHER" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LIREMARE").ToString().ToUpper() = "TREADLIFE" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LIREMARE").ToString().ToUpper() = "INTERIOR" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
End If
J += 1
If ds.Tables(0).Rows(i)("LITIRPOS").ToString().ToUpper() = "LEFT FRONT" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LITIRPOS").ToString().ToUpper() = "LEFT REAR" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LITIRPOS").ToString().ToUpper() = "RIGHT FRONT" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LITIRPOS").ToString().ToUpper() = "RIGHT REAR" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LITIRPOS").ToString().ToUpper() = "TRAILER" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "Yes")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
ElseIf ds.Tables(0).Rows(i)("LITIRPOS").ToString().ToUpper() = "OTHER" Then
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), "No")
End If
J += 1
pdfFormFields.SetField("untitled" + Convert.ToString(J), ds.Tables(0).Rows(i)("LIAPPNBR").ToString())
J += 1
'Next
K = J
Next
而不是在每行代码中添加J + = 1,我想要一些不错的代码。这对你来说可能看起来很奇怪。但是要求就是这样,我必须通过为执行的每一行语句递增J来做到这一点。
有人可以帮帮我这个吗?
P.S:我对下来的选票并不感到困扰。我只想学习更好的编程方法
Instead of adding J+=1 at each line of code, I want something nice and less code. This may seem weird for you. But the requirement is like that, I have to do this way by incrementing J for every line of statement executed.
Could someone help me with this please?
P.S: I am not bothered about the down votes. I only want to learn better way of programming
推荐答案
你正在寻找相当于C#的 ++ $ c $的VB.net c>操作员。
不幸的是(当前)不是一个。
所以写一个自己辅助函数,例如
You are looking for the VB.net equivalent of C#'s++
operator.
Unfortunately there (currently) isn't one.
So write yourself a helper function such as
Function Increment(ByRef value As Integer) As Integer
Dim Tmp As Integer = value
value += 1
Return Tmp
End Function
我在这篇文章 [ ^ ] - 来自Maciej Pakulski的回复
使用它像
which I found at this post[^] - response from Maciej Pakulski
And use it like
pdfFormFields.SetField("untitled" + Convert.ToString(Increment(J)), ds.Tables(0).Rows(i)("LIDOT").ToString())
注意因为 Tmp从函数返回
,它是 J
的原始值,传递给转换但是 J
仍在增加。
顺便说一句,我不是转换
的粉丝 - 我更喜欢对象上的内置 ToString()
方法。即
Note that because Tmp
is being returned from the function it is the original value of J
that is passed to the Convert but J
is still incremented.
As an aside, I'm not a fan of Convert
- I prefer the built-in ToString()
method on the object. I.e.
pdfFormFields.SetField("untitled" + Increment(J).ToString(), ds.Tables(0).Rows(i)("LIDOT").ToString())
我再看看这个,你可能会更喜欢一个更像
I had another look at this and you would probably be better off with a function more like
Function DeriveFieldName(ByRef value As Integer) As String
Dim Tmp As Integer = value
value += 1
Return "untitled" + Tmp.ToString()
End Function
然后你可以有更多更整洁的代码,例如
Then you can have much tidier code such as
pdfFormFields.SetField(DeriveFieldName(J), "Yes")
Put您的数据在静态字典中,只需循环遍历字典。
Put your data in a static dictionary, and simply loop through the dictionary.
Dictionary<string, string> BEADdata = new Dictionary<string, string> {
{"untitled1", "Yes" },
{"untitled2", "No" },
{"untitled3", "No" }
};
Dictionary<string, string> TREADdata = new Dictionary<string, string> {
{"untitled1", "No" },
{"untitled2", "Yes" },
{"untitled3", "No" }
}
Even better, store this data in a config file, so it can be maintained independently of the application.
Even better, store this data in a config file, so it can be maintained independently of the application.
这篇关于为for循环增加每个执行行的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!