【发布时间】:2016-02-10 07:49:43
【问题描述】:
我有两门课
public class Item
{
public string LineID{ get; set; }
public string ItemNo{ get; set; }
public List<Itemcode> ItemcodeList{ get; set; }
}
public class Itemcode
{
public string LineID{ get; set; }
public string code { get; set; }
public string codeValue { get; set; }
}
还有两个数据表 ds.Tables[1] 和 ds.Tables[2]
我正在将两个数据集中的数据转换为 Item 类的列表,其中还包含 Itemcode 类的列表
我的做法如下
List<Item> items = ds.Tables[1].AsEnumerable().Select(dataRow => new Item
{
LineID= Convert.ToString(dataRow.Field<int>("LineID")),
ItemNo= dataRow.Field<string>("ItemNo"),
ItemcodeList = ds.Tables[2].AsEnumerable().Select(row => new Itemcode
{
code= Convert.ToString(row.Field<string>("code")),
codeValue = Convert.ToString(row.Field<string>("codeValue")),
}).ToList()
}).ToList();
上面的代码针对 ds.Table[1] 的每一行给出了所有 ds.Tables[2] 行
但我只想要 ds.Table[1] 的 LineID 与 ds.Table[2] 的 LineID 匹配的那些行,我必须更改条件
【问题讨论】:
-
为什么需要 AsEnumerable() ?
-
因为 DataTable 没有实现 IEnumerable