C# 如何在c中将DataTable中的值转换为字符串数组#
我有一个数据表,其中包含一行。我想将此数据表值转换为字符串数组,以便通过字符串数组索引访问该数据表的列值 例如,如果我的DataTable如下所示C# 如何在c中将DataTable中的值转换为字符串数组#,c#,.net,linq,C#,.net,Linq,我有一个数据表,其中包含一行。我想将此数据表值转换为字符串数组,以便通过字符串数组索引访问该数据表的列值 例如,如果我的DataTable如下所示 | Name | Address | Age | ------------------------------- | jim | USA | 23 | 我想将该数据表中的值存储到我的字符串数组中,这样MyStringArray[1]将为我提供值USA 提前感谢非常简单: var stringArr = dat
| Name | Address | Age |
-------------------------------
| jim | USA | 23 |
我想将该数据表中的值存储到我的字符串数组中,这样MyStringArray[1]将为我提供值USA
提前感谢非常简单:
var stringArr = dataTable.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
其中属性是一个对象数组,包含数据表中每列的行值。
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);
string[]result=新字符串[table.Columns.Count];
DataRow dr=表。行[0];
for(int i=0;i
假设数据表中有许多这样的行,并且每一行都是行,则可能是这样的:
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()} );
}
如果您使用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"
}
类数据表
{
公共列表行{get;set;}
公共数据表(){
行=新列表();
}
}
类数据
{
公共字符串名称{get;set;}
公共字符串地址{get;set;}
公共整数{get;set;}
}
void Main()
{
var datatable=新的datatable();
var r=新数据();
r、 Name=“吉姆”;
r、 地址=“美国”;
r、 年龄=23岁;
datatable.rows.Add(r);
List mystringrays=新列表();
foreach(datatable.rows中的var行)//或类似
{
添加(新字符串[]{row.Name,row.Address,row.Age.ToString()});
}
var s=MyStringArrays.ElementAt(0)[1];
控制台。写上“;//”美国“
}
如果这就是您想要做的,您不需要将其转换为数组。您可以通过以下方式访问它:
string myData=yourDataTable.Rows[0][1].ToString();//Gives you USA
如果您想使用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;
List BrandsInDataTable=new List();
DataTable g=Access._ME_g_BrandsInPop();
如果(g.Rows.Count>0)
{
对于(int x=0;x
为什么不取该值并对其进行拆分(“”)。。?例如var MystringArray=“jim USA 23”。拆分(“”)代码>这将存储列的名称,而不是行的内容。“选择…”不是我的datatable控件的选项。我正在使用vs 2017和所有当前库。Select
是LINQ中包含的扩展方法,而不是DataTable中包含的扩展方法。你有使用System.Linq的吗代码>在文件的前几行中?
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;
}
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;