C# 将数组列表到数据表
我有一个字符串[]列表,我正试图使用LINQ将其转换为数据集/数据表。 我将文本文件解析为list,其中第一行有4列,其他行有与列关联的数据 列表中的所有内容都显示为一个数组 列表[10],其中列表[0]包含字符串[4]项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();
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我已经更新了,但是请考虑一下:如果第一行的唯一问题是值不属于那里,那么您应该首先用另一行尝试什么?它们都从同一个列表中选择字符串数组中的项。