我在C#中的网页/剃刀与MS SQL数据库编码通过MS SQL列循环
我有以下的列
- SAT1
- SAT2
- SAT3表
- Sat4
- ...
- Sat25
我想遍历每个这些,并指定值satAvail
我有以下
for (var i = 1; i < 26; i++)
{
satWeek = "Sat" + i;
satAvail = item.satWeek;
}
我想要的satAvail = item.Sat1;
相当于我已经尝试了一些不同的行但没有快乐
我在C#中的网页/剃刀与MS SQL数据库编码通过MS SQL列循环
我有以下的列
我想遍历每个这些,并指定值satAvail
我有以下
for (var i = 1; i < 26; i++)
{
satWeek = "Sat" + i;
satAvail = item.satWeek;
}
我想要的satAvail = item.Sat1;
相当于我已经尝试了一些不同的行但没有快乐
我不知道我在你的实际需要明确的,但总的来说,与工作时3210,如果您想要访问由Database.Query
或Database.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];
很抱歉,因为没有提前清楚或不知道确切的术语 - 这完全按照我的意愿工作。布里尔感谢迈克 - 你和你的网站对我来说是一个巨大的帮助 – baconsandwich
使用反射
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();
Sat1 Sat2是列名称,我收到无效列名称“GetType”。 – baconsandwich
@ user1990727你的意思是你没有对应于你的表的类吗?所以我的回答远非有用,确实如此。你如何访问你的数据库? –
@ user1990727也许显示你的尝试可以帮助。 –
,如果您使用的是ORM或ADO目前尚不清楚,但假设ADO,您可以使用类似:
DataTable dt = new DataTable();
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
var satAvail = row[column];
}
}
这是不可能的(在C#) – jAC
如果要做到这一点,不要使用ORM。只需使用传统的查询方法,通过索引器访问结果,这样做很简单。 – Servy