如何将一列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(); }