如何从 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++;
}