14

単一の行を含む DataTable があります。この DataTable 値を文字列配列に変換して、文字列配列インデックスを介してその DataTable の列値にアクセスできるようにしたいたとえば、私の DataTable が次の場合

|  Name  |  Address  |   Age  |
-------------------------------
|  jim   |    USA    |   23   |

その Datatable の値を文字列配列に格納して、MyStringArray[1]で値 USA が得られるようにしたいと考えています。

前もって感謝します

4

6 に答える 6

29

非常に簡単:

var stringArr = dataTable.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();

プロパティDataRow.ItemArrayは、データ テーブルの各列の行の値を含むオブジェクトの配列です。

于 2013-03-18T21:58:39.063 に答える
6

データテーブル内にこれらの行が多数あり、各行が であると仮定すると、おそらく次のようになりますrow

List<string[]> MyStringArrays = new List<string[]>();
foreach( var row in datatable.rows )//or similar
{
 MyStringArrays.Add( new string[]{row.Name,row.Address,row.Age.ToString()} );
}

その後、次のいずれかにアクセスできます。

MyStringArrays.ElementAt(0)[1]

linqpadを使用する場合、例の非常に単純なシナリオは次のとおりです。

class Datatable
{
 public List<data> rows { get; set; }
 public Datatable(){
  rows = new List<data>();
 }
}

class data
{
 public string Name { get; set; }
 public string Address { get; set; }
 public int Age { get; set; }
}

void Main()
{
 var datatable = new Datatable();
 var r = new data();
 r.Name = "Jim";
 r.Address = "USA";
 r.Age = 23;
 datatable.rows.Add(r);
 List<string[]> MyStringArrays = new List<string[]>();
 foreach( var row in datatable.rows )//or similar
 {
  MyStringArrays.Add( new string[]{row.Name,row.Address,row.Age.ToString()} );
 }
 var s = MyStringArrays.ElementAt(0)[1];
 Console.Write(s);//"USA"
}
于 2013-03-18T22:05:34.513 に答える
4

それだけの場合は、配列に変換する必要はありません。次のようにアクセスできます。

string myData=yourDataTable.Rows[0][1].ToString();//Gives you USA
于 2013-05-24T10:13:07.293 に答える
3

 
            string[] result = new string[table.Columns.Count];
            DataRow dr = table.Rows[0];
            for (int i = 0; i < dr.ItemArray.Length; i++)
            {
                result[i] = dr[i].ToString();
            }
            foreach (string str in result)
                Console.WriteLine(str);

于 2013-03-18T22:03:00.917 に答える
0
    private string[] GetPrimaryKeysofTable(string TableName)
    {
        string stsqlCommand = "SELECT column_name FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE " +
                              "WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1" +
                              "AND table_name = '" +TableName+ "'";
        SqlCommand command = new SqlCommand(stsqlCommand, Connection);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = command;

        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;

        adapter.Fill(table);

        string[] result = new string[table.Rows.Count];
        int i = 0;
        foreach (DataRow dr in table.Rows)
        {
            result[i++] = dr[0].ToString();
        }

        return result;
    }
于 2016-10-01T03:14:53.937 に答える