Linq比较两个数据表和过滤数据

时间:2015-10-21 09:55:40

标签: c# linq asp.net-web-api datatable

我有两个dataTables,

     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是第二表的列。 我想使用linq使用Id - 列关系比较两个表,我的预期过滤输出应该看起来像

      [{
        "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实现这一目标? 帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您想使用加入(join clause (C# Reference)

using(var c = DataBaseConnection())
{
 var data=from r in c.firstTable
          join st in c.SecondTable on r.Id equals st.FieldId
          select new
                 { 
                   // create return object
                 };
}