C# for循环通过ms sql列

C# for循环通过ms sql列,c#,razor,asp.net-webpages,C#,Razor,Asp.net Webpages,我正在使用MS SQL数据库在网页/剃须刀上用c#编码 我有一个包含以下列的表 Sat1 Sat2 Sat3 Sat4 Sat25 我想循环遍历其中的每一个,并将值分配给satAvail 我有以下几点 for (var i = 1; i < 26; i++) { satWeek = "Sat" + i; satAvail = item.satWeek; } for(变量i=1;i

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

我有一个包含以下列的表

  • Sat1
  • Sat2
  • Sat3
  • Sat4
  • Sat25
我想循环遍历其中的每一个,并将值分配给
satAvail

我有以下几点

for (var i = 1; i < 26; i++)
{
    satWeek = "Sat" + i;
    satAvail = item.satWeek;
}
for(变量i=1;i<26;i++)
{
satWeek=“Sat”+i;
satAvail=item.satWeek;
}
我想要相当于
satAvail=item.Sat1
我试过几句不同的台词,但没有乐趣

使用反射

var value = item.GetType().GetProperty("Sat" + i).GetValue(item, null);
如果你想要一个和(假设Sat1…Sat2是整数)


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

DataTable dt = new DataTable();

        foreach (DataRow row in dt.Rows)
        {
            foreach (DataColumn column in dt.Columns)
            {
                var satAvail = row[column];
            }
        }

我不确定我是否清楚您的实际需求,但一般来说,在使用时,如果您希望访问由
数据库生成的列值。Query
数据库。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];

这是不可能的(在C#)如果你想这样做,不要使用ORM。只需使用一种传统的查询方法,其中结果通过索引器访问,这就很简单了。Sat1 Sat2是列名,我得到的列名“GetType”无效。@user1990727您的意思是没有与表对应的类?因此,我的答案确实是毫无用处的。如何访问数据库?很抱歉,之前不清楚,或者不知道确切的术语-这完全符合我的要求。brill谢谢mike-你和你的网站给了我巨大的帮助
var db = Database.Open("MyDatabase");
var item = db.QuerySingle("SELECT * FROM Mytable WHERE ID = 1");
var satWeek = "Sat" + "1";
var satAvail = item[satWeek];