簡體   English   中英

c#中如何將DataTable中的值轉換為字符串數組

[英]How to Convert the value in DataTable into a string array in c#

我有一個包含單行的數據表。 我想將此 DataTable 值轉換為字符串數組,以便我可以通過字符串數組索引訪問該 DataTable 的列值例如,如果我的 DataTable 如下

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

我想將該數據表中的值存儲到我的字符串數組中,這樣MyStringArray[1]會給我值 USA。

提前致謝

好簡單:

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

其中DataRow.ItemArray屬性是一個對象數組,其中包含數據表每一列的行值。

也許是這樣的,假設數據表中有很多這樣的行並且每一行都是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"
}

如果這就是您想要做的,則不需要將其轉換為數組。 您可以通過以下方式訪問它:

string myData=yourDataTable.Rows[0][1].ToString();//Gives you USA

 
            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);

如果您想使用System.Data而不是System.LINQ ,那么您可以執行以下操作。

 List<string> BrandsInDataTable = new List<string>();
 DataTable g = Access._ME_G_BrandsInPop(); 
        if (g.Rows.Count > 0)
        {
            for (int x = 0; x < g.Rows.Count; x++)
                BrandsInDataTable.Add(g.Rows[x]["Name"].ToString()); 
        }
        else return;
    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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM