【发布时间】:2015-10-21 09:55:39
【问题描述】:
我有两个数据表,
Id Name
1 Alex
2 Hiro
我的第二个数据表是
Field | 1 | 1_Value | 2 | 2_Value
Salary | 123.4| Good | 245 | Bad
CTC | 25.4 | Bad | 300 | good
第一个表 ID 值 1、2 是第二个表的列。 我想使用 Id 比较两个表 - 使用 linq 的列关系,我预期的过滤输出应该看起来像
[{
"Id" : 1 , "Name": "Alex",
"data" : [123.4, 25.4] ,"values":["Good" ,"Bad"]},
{
"Id" : 2 , "Name": "Hiro",
"data" : [245, 300] ,"values":["Bad","Good" ]}
]
我的代码尝试使用 foreach 循环,例如
if (ds.Tables[1].Rows.Count > 0)
{
var comparisonDetail = (from DataRow dataRow in ds.Tables[1].Rows
select new cls.MyBaseClass()
{
ID = Convert.ToInt64(dataRow["ID"]),
Name= Convert.ToString(dataRow["Name"])
}
).ToList();
foreach (var vId in comparisonDetail)
{
foreach(var vRow in ds.Tables[2].Rows)
{
vId.Data = vRow.value.
}
}
如何使用 c# linq 实现这一点? 帮助将不胜感激
【问题讨论】:
-
为什么要这样塑造第二张数据表?您应该首先尝试创建一个更加规范化的数据结构。
-
DataSets 和 DatTables 支持关系,这意味着你不需要做任何特别的事情来连接两个相关的表。第二张桌子虽然看起来是旋转的,这使得它基本上无法使用。如果它的原始来源是一些带有 Salary、CTC 字段的“EmployeeData”表,只需加载 this 表,并在它们之间创建外键关系
标签: c# linq asp.net-web-api datatable