How to convert a column of DataTable to a List

I have a DataTable with multiple columns. I want to get a List<String> out of first column of DataTable. How can I do that?

149120 次浏览
var list = dataTable.Rows.OfType<DataRow>()
.Select(dr => dr.Field<string>(columnName)).ToList();

[Edit: Add a reference to System.Data.DataSetExtensions to your project if this does not compile]

Here you go.

           DataTable defaultDataTable = defaultDataSet.Tables[0];
var list = (from x in defaultDataTable.AsEnumerable()
where x.Field<string>("column1") == something
select x.Field<string>("column2")).ToList();

If you need the first column

           var list = (from x in defaultDataTable.AsEnumerable()
where x.Field<string>(1) == something
select x.Field<string>(1)).ToList();

Is this what you need?

DataTable myDataTable = new DataTable();
List<int> myList = new List<int>();
foreach (DataRow row in myDataTable.Rows)
{
myList.Add((int)row[0]);
}

Try this:

static void Main(string[] args)
{
var dt = new DataTable
{
Columns = { { "Lastname",typeof(string) }, { "Firstname",typeof(string) } }
};
dt.Rows.Add("Lennon", "John");
dt.Rows.Add("McCartney", "Paul");
dt.Rows.Add("Harrison", "George");
dt.Rows.Add("Starr", "Ringo");


List<string> s = dt.AsEnumerable().Select(x => x[0].ToString()).ToList();


foreach(string e in s)
Console.WriteLine(e);


Console.ReadLine();
}

I make a sample for you , and I hope this is helpful...

    static void Main(string[] args)
{
var cols = new string[] { "col1", "col2", "col3", "col4", "col5" };


DataTable table = new DataTable();
foreach (var col in cols)
table.Columns.Add(col);


table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });


foreach (var col in cols)
{
var results = from p in table.AsEnumerable()
select p[col];


Console.WriteLine("*************************");
foreach (var result in results)
{
Console.WriteLine(result);
}
}




Console.ReadLine();
}

I do just like below, after you set your column AsEnumarable you can sort, order or how you want.

 _dataTable.AsEnumerable().Select(p => p.Field<string>("ColumnName")).ToList();

1.Very Simple Code to iterate datatable and get columns in list.

2.code ==>>>

 foreach (DataColumn dataColumn in dataTable.Columns)
{
var list = dataTable.Rows.OfType<DataRow>()
.Select(dataRow => dataRow.Field<string>
(dataColumn.ToString())).ToList();
}