C# 从数据表中提取数据

C# 从数据表中提取数据,c#,datatable,C#,Datatable,我有一个DataTable,它有两列作为分号分隔的列表。我需要一种方法来解析这些列中的数据并将它们“匹配”在一起。例如,让我们以James Jo的信息为例-我希望在提取时它看起来像这样: SH11 - Shirt HA22 - Hat SO33 - Socks 这是我的数据表设置,都是字符串值 DataTable table = new DataTable(); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Item

我有一个DataTable,它有两列作为分号分隔的列表。我需要一种方法来解析这些列中的数据并将它们“匹配”在一起。例如,让我们以James Jo的信息为例-我希望在提取时它看起来像这样:

SH11 - Shirt
HA22 - Hat
SO33 - Socks
这是我的数据表设置,都是字符串值

DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
table.Columns.Add("ItemsSold", typeof(string));
table.Columns.Add("ItemIDs, typeof(string));

table.Rows.Add("James Jo", "Shirt; Hat; Socks;", "SH11; HA22; SO33");
table.Rows.Add("Jack Bo", "Pants; Scarf;", "PA44; SC55");
在1000次中有999次(有些人甚至会说总是这样),使用分隔字符串表示数据是错误的,这样做是错误的

理想情况下,一个表用于项目,一个表用于名称,一个表用于表示它们之间的关系

但是,假设您坚持使用当前的设计,您可以通过使用
string.Split()
方法从每个表单元格中的数据获取数组来获得所需的结果,如下所示:

var itemsSold = table.Rows[0].Field<string>("ItemsSold").Split(new string[] {", "}, StringSplitOptions.RemoveEmptyEntries);
var ItemIDs = table.Rows[0].Field<string>("ItemIDs").Split(new string[] {", "}, StringSplitOptions.RemoveEmptyEntries);
var itemsSold=table.Rows[0]。字段(“itemsSold”).Split(新字符串[]{,“},StringSplitOptions.RemoveEmptyEntries);
var ItemIDs=table.Rows[0]。字段(“ItemIDs”).Split(新字符串[]{,“},StringSplitOptions.RemoveEmptyEntries);

然后您将有两个字符串数组—一个包含
“ItemsSold”
的值,另一个包含
“ItemIDs”

的值。使用GroupBy对所有名称进行分组:table.AsEnumerable().GroupBy(x=>x.Field(“Name”).ToList();或者只获取一个名称:table.AsEnumerable().Where(x=>x.Field(“name”)==“James Jo”).ToList();我得到编译错误'DataRow不包含'Field'的定义,并且没有可访问的扩展方法'Field'接受'DataRow'的参数并添加对的引用