我在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