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

本文关键字:数据表 过滤 数据 两个 比较 Linq | 更新日期: 2023-09-27 18:18:35

我有两个数据表,

     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

First Table 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实现这一点?

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

你想使用join (join子句(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
                 };
}