1

我正在使用 MS SQL 数据库在网页/剃须刀上使用 c# 进行编码

我有一个包含以下列的表格

  • 星期六1
  • Sat2
  • Sat3
  • Sat4
  • ...
  • Sat25

我想遍历每一个,并将值分配给satAvail

我有以下

for (var i = 1; i < 26; i++)
{
    satWeek = "Sat" + i;
    satAvail = item.satWeek;
}

我想要相当于satAvail = item.Sat1; 我尝试了几条不同的线但没有快乐

4

3 回答 3

1

目前尚不清楚您使用的是 ORM 还是 ADO,但假设 ADO,您可以使用以下内容:

DataTable dt = new DataTable();

        foreach (DataRow row in dt.Rows)
        {
            foreach (DataColumn column in dt.Columns)
            {
                var satAvail = row[column];
            }
        }
于 2013-01-18T15:27:08.723 回答
1

使用反射

var value = item.GetType().GetProperty("Sat" + i).GetValue(item, null);

如果你想要一个总和(假设 Sat1... Sat2 是整数)

var sum = 0;
for (var i = 1; i < 26; i++) {
  sum +=(int)item.GetType().GetProperty("Sat" + i).GetValue(item, null);
}
satAvail = sum;

或 linq 方式:

var sum = Enumerable.Range(1, 25)
                     .Select(x => (int)item.GetType().GetProperty("Sat" + x).GetValue(item, null))
                     .Sum();
于 2013-01-18T14:40:00.137 回答
0

我不确定我是否清楚您的实际要求,但总的来说,在使用Database helper时,如果您想访问由 a Database.QueryorDatabase.QuerySingle调用产生的列值,您可以使用点表示法或索引器来完成.

例如,您可能会通过以下方式获取数据:

var db = Database.Open("MyDatabase");
var item = db.QuerySingle("SELECT * FROM Mytable WHERE ID = 1");

如果您知道要访问名为 的列的值Sat1,则可以使用item.Sat1. 但是,如果列名表示为变量,则需要使用索引器:

var satWeek = "Sat" + "1";
var satAvail = item[satWeek];
于 2013-01-18T16:31:08.187 回答