如何将一列DataTable转换为列表

我有一个DataTable与多个列。 我想从DataTable的第一列中取出List<String> 。 我怎样才能做到这一点?

尝试这个:

 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(); } 
 var list = dataTable.Rows.OfType<DataRow>() .Select(dr => dr.Field<string>(columnName)).ToList(); 

[ 编辑 :如果这个不编译添加到您的项目的System.Data.DataSetExtensions引用]

干得好。

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

如果你需要第一列

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

这是你需要的吗?

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

我为你做一个样本,我希望这对你有帮助。

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