简体   繁体   English

遍历数据表并将值分配给不同的变量

[英]Iterate over datatable and assign values to different variables

I have a datatable containing a list of 6 values. 我有一个包含6个值的列表的数据表。 I want to iterate over this table and assign every new row value to a different variable. 我想遍历该表并将每个新行值分配给一个不同的变量。 The table is filled by a class named DataTasks. 该表由名为DataTasks的类填充。

This is how I do it at the moment, but I am sure there must be a better, more concise way? 目前,我就是这样做的,但是我确定必须有一个更好,更简洁的方法?

DataTable dt = new DataTable();
dt = DataTasks.CreateDataTableFromSQL(strSQL);
// Loop counter
int i = 0;

foreach (DataRow row in dt.Rows)
{
    // Assign ranges - this is where I hope to have better code!!
    switch(i)
    {
        case 0:
            SomeClass.Range1 = (int)row["Range"];
            break;
        case 1:
            SomeClass.Range2 = (int)row["Range"];
            break;
        case 2:
            SomeClass.Range3 = (int)row["Range"];
            break;
        case 3:
            SomeClass.Range4 = (int)row["Range"];
            break;
        case 4:
            SomeClass.Range5 = (int)row["Range"];
            break;
        case 5:
            SomeClass.Range6 = (int)row["Range"];
            break;
        default:
            break;
    }

    // Increment counter
    i++;
}

Well, by the looks of it you're simply assigning the value of 'Range' depending on what row number it is. 好吧,从外观上看,您只是根据行号分配“范围”的值。 So why not just do that with out a for loop and do it using indexes. 那么,为什么不使用for循环而不使用索引来做到这一点呢? This assumes the number of rows in your datatable is always 6 of course. 当然,假设数据表中的行数始终为6。

Something like this should work: 这样的事情应该起作用:

SomeClass.Range1 = (int)dt.Rows[0]["Range"]; //Gets value in 'Range' column in first row.
SomeClass.Range2 = (int)dt.Rows[1]["Range"]; //Gets value in 'Range' column in second row.
//Add more here.

You could try storing all of the ranges in an array 您可以尝试将所有范围存储在数组中

DataTable dt = new DataTable();
dt = DataTasks.CreateDataTableFromSQL(strSQL);
// Loop counter
int i = 0;

int[] ranges = new int[6];

//assuming you have 6 rows
foreach (DataRow row in dt.Rows)
{
  ranges[i] = (int)row["Range"];    

  i++;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM