C# 将数组列表到数据表

C# 将数组列表到数据表,c#,linq,list,datatable,C#,Linq,List,Datatable,我有一个字符串[]列表,我正试图使用LINQ将其转换为数据集/数据表。 我将文本文件解析为list,其中第一行有4列,其他行有与列关联的数据 列表中的所有内容都显示为一个数组 列表[10],其中列表[0]包含字符串[4]项 List<string[]> list = File.ReadLines(s) .Select(r => r.TrimEnd('#')) .Select(line => line.Split(';')) .ToList();

我有一个字符串[]列表,我正试图使用LINQ将其转换为数据集/数据表。 我将文本文件解析为list,其中第一行有4列,其他行有与列关联的数据

列表中的所有内容都显示为一个数组

列表[10],其中列表[0]包含字符串[4]项

List<string[]> list = File.ReadLines(s)
    .Select(r => r.TrimEnd('#'))
    .Select(line => line.Split(';'))
    .ToList();

DataTable table = new DataTable();

table.Columns.AddRange(list.First().Select(r => new DataColumn(r.Value)).ToArray());

list = list.Skip(1).ToArray().ToList();

list.ForEach(r => table.Rows.Add(r.Select(c => c.Value).Cast<object>().ToArray()));
List List=File.ReadLines
.选择(r=>r.TrimEnd('#'))
.Select(line=>line.Split(“;”))
.ToList();
DataTable=新的DataTable();
table.Columns.AddRange(list.First().Select(r=>newdatacolumn(r.Value)).ToArray();
list=list.Skip(1.ToArray().ToList();
list.ForEach(r=>table.Rows.Add(r.Select(c=>c.Value.Cast().ToArray());
LINQ不接受Value属性


有人能为这个实现提供简单有效的方法吗?

System.String
没有名为
Value
的属性

如果要为第一行中的每个项目创建列,只需为其指定字符串:

table.Columns.AddRange(list.First().Select(r => new DataColumn(r)).ToArray());

//  You don't need ToArray() here. 
list = list.Skip(1).ToList();

//  Get rid of Value in this line too, and you don't need 
//  .Select(c => c) either -- that's a no-op so leave it out.
list.ForEach(row => table.Rows.Add(row.Cast<object>().ToArray()));
table.Columns.AddRange(list.First().Select(r=>newdatacolumn(r)).ToArray());
//你不需要在这里排队。
list=list.Skip(1.ToList();
//在这一行中也去掉价值,你不需要
//.选择(c=>c)其中一个--这是一个不可操作的选项,所以请忽略它。
list.ForEach(row=>table.Rows.Add(row.Cast().ToArray());
这里没有字典
list.First()
是一个字符串数组。在数组上调用
Select
时,它只是将数组中的每个项依次传递给lambda


Dictionary.Select()
向lambda传递一系列
KeyValuePair
。不同的阶级,不同的行为

System.String
没有名为
Value
的属性

如果要为第一行中的每个项目创建列,只需为其指定字符串:

table.Columns.AddRange(list.First().Select(r => new DataColumn(r)).ToArray());

//  You don't need ToArray() here. 
list = list.Skip(1).ToList();

//  Get rid of Value in this line too, and you don't need 
//  .Select(c => c) either -- that's a no-op so leave it out.
list.ForEach(row => table.Rows.Add(row.Cast<object>().ToArray()));
table.Columns.AddRange(list.First().Select(r=>newdatacolumn(r)).ToArray());
//你不需要在这里排队。
list=list.Skip(1.ToList();
//在这一行中也去掉价值,你不需要
//.选择(c=>c)其中一个--这是一个不可操作的选项,所以请忽略它。
list.ForEach(row=>table.Rows.Add(row.Cast().ToArray());
这里没有字典
list.First()
是一个字符串数组。在数组上调用
Select
时,它只是将数组中的每个项依次传递给lambda


Dictionary.Select()
向lambda传递一系列
KeyValuePair
。不同的阶级,不同的行为

“LINQ不接受Value属性”——你能描述一下你自己对LINQ不接受Value属性的感知和主观体验吗?我在使用字典时使用了Value属性。。因此,如果列位于第一行,则会将列添加到表中。。不知道如何处理这里的列表。。请告知“LINQ不接受值属性”——你能描述一下你自己对LINQ不接受值属性的感知和主观体验吗?我在使用字典时使用了值属性。。因此,如果列位于第一行,则会将列添加到表中。。不知道如何处理这里的列表。。谢谢,这是将第一行添加为列。。如何使用List.foreach(r=>table.rows.add(r.Select(c=>c.Value.Cast().ToArray()))将行添加到foreach中的datatbale中@user1046415我已经更新了,但是请考虑一下:如果第一行的唯一问题是
值不属于那里,那么您应该首先用另一行尝试什么?他们都在从同一个列表中选择字符串数组中的项。谢谢,这是将第一行添加为列。。如何使用List.foreach(r=>table.rows.add(r.Select(c=>c.Value.Cast().ToArray()))将行添加到foreach中的datatbale中@user1046415我已经更新了,但是请考虑一下:如果第一行的唯一问题是
值不属于那里,那么您应该首先用另一行尝试什么?它们都从同一个列表中选择字符串数组中的项。