如何从 foreach 中获取数据并在 c# 中重用并在 while 中执行?
How to get data out of a foreach and reuse in while and do while in c#?
在 Foreach 中,数据完全循环但是当数据发送到 while 时,它仅显示每个数据的单个字符,例如:确切的数据是:“John”,但在我的代码中它显示:J 然后下一个 O , H, N 直到每个字符的确切数据都写完。下面的代码示例:
foreach (DataGridViewRow row in DataGrid2.Rows)
{
bool isSelected = Convert.ToBoolean(row.Cells["ChkOkay"].Value);
if (isSelected)
{
value += row.Cells["EnrollName"].Value.ToString();
Console.Writeline("Selected Values " + value);
}
}
while (v < value.Length())
{
do
{
//It display single character only instead whole name.
MessageBox.Show("Name: "value[v] + "Slot: " + u);
foreach (var chari in value[v].ToString())
{
//I re use the data here from 1st foreach
}
v++;
u += 51;
} while (u < 5559);
字符串可以像数组一样被索引。将字符串视为数组(并在方括号中添加索引器)returns 字符串中该位置的字符.. "John"[0]
是 'J'
。您的 value
是单个字符串,而不是字符串数组。
有了这个:
value += row.Cells["EnrollName"].Value.ToString();
您正在使 string value
的字符串越来越长。如果您的网格有 3 行包含“mark”、“luke”和“john”,则您的 value
最终为 "marklukejohn"
如果你然后遍历它,你会在消息框中一次输出一个字符
我怀疑您想将字符串作为整个字符串(其中 3 个)保留在数组(或列表)中。在这种情况下:
var names = new List<string>();
foreach ....
names.Add(row.Cells["EnrollName"].Value.ToString())
然后您可以稍后遍历列表并将名称作为完整字符串拉出
while (v < names.Count)
{
MessageBox.Show("Name: " + names[v] + "Slot: " + u);
您的代码充满语法错误,无法编译。一定要先让代码工作 post 除非问题是关于编译器错误的
我不明白你的代码,但正确的形式是将一列 DataGrid 行放在一个列表中。
然后打印列表元素,然后检查每个列表项的字符。
List<string> EnrollNameList = new List<string>();
foreach (DataGridViewRow row in DataGrid2.Rows)
{
bool isSelected = Convert.ToBoolean(row.Cells["ChkOkay"].Value);
if (isSelected)
{
string colValue = row.Cells["EnrollName"].Value.ToString();
EnrollNameList.Add(colValue);
Console.WriteLine("Selected Values " + colValue);
}
}
int v = 0;
while (v < EnrollNameList.Count)
{
//message box show whole EnrollName
MessageBox.Show("Name: " + EnrollNameList[v]);
foreach (var chari in EnrollNameList[v])
{
//get each char in EnrollName
}
v++;
}
在 Foreach 中,数据完全循环但是当数据发送到 while 时,它仅显示每个数据的单个字符,例如:确切的数据是:“John”,但在我的代码中它显示:J 然后下一个 O , H, N 直到每个字符的确切数据都写完。下面的代码示例:
foreach (DataGridViewRow row in DataGrid2.Rows)
{
bool isSelected = Convert.ToBoolean(row.Cells["ChkOkay"].Value);
if (isSelected)
{
value += row.Cells["EnrollName"].Value.ToString();
Console.Writeline("Selected Values " + value);
}
}
while (v < value.Length())
{
do
{
//It display single character only instead whole name.
MessageBox.Show("Name: "value[v] + "Slot: " + u);
foreach (var chari in value[v].ToString())
{
//I re use the data here from 1st foreach
}
v++;
u += 51;
} while (u < 5559);
字符串可以像数组一样被索引。将字符串视为数组(并在方括号中添加索引器)returns 字符串中该位置的字符.. "John"[0]
是 'J'
。您的 value
是单个字符串,而不是字符串数组。
有了这个:
value += row.Cells["EnrollName"].Value.ToString();
您正在使 string value
的字符串越来越长。如果您的网格有 3 行包含“mark”、“luke”和“john”,则您的 value
最终为 "marklukejohn"
如果你然后遍历它,你会在消息框中一次输出一个字符
我怀疑您想将字符串作为整个字符串(其中 3 个)保留在数组(或列表)中。在这种情况下:
var names = new List<string>();
foreach ....
names.Add(row.Cells["EnrollName"].Value.ToString())
然后您可以稍后遍历列表并将名称作为完整字符串拉出
while (v < names.Count)
{
MessageBox.Show("Name: " + names[v] + "Slot: " + u);
您的代码充满语法错误,无法编译。一定要先让代码工作 post 除非问题是关于编译器错误的
我不明白你的代码,但正确的形式是将一列 DataGrid 行放在一个列表中。
然后打印列表元素,然后检查每个列表项的字符。
List<string> EnrollNameList = new List<string>();
foreach (DataGridViewRow row in DataGrid2.Rows)
{
bool isSelected = Convert.ToBoolean(row.Cells["ChkOkay"].Value);
if (isSelected)
{
string colValue = row.Cells["EnrollName"].Value.ToString();
EnrollNameList.Add(colValue);
Console.WriteLine("Selected Values " + colValue);
}
}
int v = 0;
while (v < EnrollNameList.Count)
{
//message box show whole EnrollName
MessageBox.Show("Name: " + EnrollNameList[v]);
foreach (var chari in EnrollNameList[v])
{
//get each char in EnrollName
}
v++;
}