C# 将数据表转换为列表

C# 将数据表转换为列表,c#,list,linq,datatable,C#,List,Linq,Datatable,我有这个数据表 DataTable dt = new DataTable(); dt.Columns.Add("A"); dt.Columns.Add("B"); dt.Rows.Add("1", "5"); dt.Rows.Add("6", "10"); dt.Rows.Add("11", "15"); 如何转换此DataTable以获得如下列表 List<string> dtList= new List<string> { "1", "5", "6", "10",

我有这个数据表

DataTable dt = new DataTable();
dt.Columns.Add("A");
dt.Columns.Add("B");
dt.Rows.Add("1", "5");
dt.Rows.Add("6", "10");
dt.Rows.Add("11", "15");
如何转换此DataTable以获得如下列表

List<string> dtList= new List<string> { "1", "5", "6", "10", "11", "15" };
使用SelectMany:

首先通过选择将其转换为DataRow[],然后选择Many将其展平为对象数组。最后,将每个值对象转换为字符串

试试这个:

    DataTable dt = new DataTable();
    dt.Columns.Add("A");
    dt.Columns.Add("B");
    dt.Rows.Add("1", "5");
    dt.Rows.Add("6", "10");
    dt.Rows.Add("11", "15");
    var output = dt.Rows.Cast<DataRow>().SelectMany(x => new[] { x[0], x[1] }).ToList();

编辑:已添加。ToList

你试过什么吗?您面临的问题是什么?那很好,谢谢:@Thierry V也可以很好地工作,但我接受这个数据类型规范的答案,谢谢你们。Select创建一个新的数据行[]不是列表,但我会使用不创建新集合的AsEnumerable,因此节省了内存和CPU。我敢肯定这是该评论的第二次出现。创建列表而不是列表
var list = dt.Select().SelectMany(row => row.ItemArray).Select(x=> (string)x).ToList()
    DataTable dt = new DataTable();
    dt.Columns.Add("A");
    dt.Columns.Add("B");
    dt.Rows.Add("1", "5");
    dt.Rows.Add("6", "10");
    dt.Rows.Add("11", "15");
    var output = dt.Rows.Cast<DataRow>().SelectMany(x => new[] { x[0], x[1] }).ToList();