1

私はMSSQLデータベースを使用してWebページ/かみそりのC#でコーディングしています

次の列のテーブルがあります

  • Sat1
  • Sat2
  • Sat3
  • Sat4
  • ..。
  • 土25

これらのそれぞれをループして、値をに割り当てたいsatAvail

私は以下を持っています

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

satAvail = item.Sat1; いくつかの異なる行を試したのと同じものが欲しいのですが、喜びがありません

4

3 に答える 3

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;

またはlinqway:

var sum = Enumerable.Range(1, 25)
                     .Select(x => (int)item.GetType().GetProperty("Sat" + x).GetValue(item, null))
                     .Sum();
于 2013-01-18T14:40:00.137 に答える
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 に答える
0

実際の要件が明確かどうかはわかりませんが、一般に、データベースヘルパー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];
于 2013-01-18T16:31:08.187 に答える