2012-05-16 91 views
0

我是LINQ的新手,并且难以翻译下面的代码。我目前正在编写一个SQL数据库的前端。我有一个SQL视图,给出了一个身份值列表(electrolyte_id)。该列表按电解质标识值进行分组,并根据electrolyte_max_date(view)中每个过程槽身份值(process_tanks_id)的最大日期进行过滤。下面是sql查询。将SQL翻译成LINQ

SELECT electrolyte.electrolyte_id, electrolyte.process_tanks_id, electrolyte.date_active 
FROM electrolyte_max_date INNER JOIN electrolyte ON 
      electrolyte_max_date.max_date = dbo.electrolyte.date_active AND 
      electrolyte_max_date.process_tanks_id = electrolyte.process_tanks_id 

我已经能够翻译LINQ中的electrolyte_max_date查询。下面是代码:

var filter_electrolyte_list = from tbl_electrolyte in _ds.electrolyte.AsEnumerable() 
           group tbl_electrolyte by 
            tbl_electrolyte.process_tanks_id into tankgroup 
           select new 
           { 
            tank = tankgroup.Key, 
            maxdate = tankgroup.Max(tbl_electrolyte => 
                 tbl_electrolyte.date_active) 
           }; 

我的问题是:我如何加入filter_electrolyte_list LINQ查询到的电解质表中另一个LINQ查询?我需要复制我在SQL视图中得到的相同结果。

在此先感谢您的帮助。 Jonathan

+0

这可能有帮助。加入多列:http://stackoverflow.com/questions/3408462/linq-join-where/3411046#3411046 –

回答

0

我觉得你想要做的是联盟两个Linq查询?

var filter_electrolyte_list = (from tbl_electrolyte in _ds.electrolyte.AsEnumerable() 
          group tbl_electrolyte by 
           tbl_electrolyte.process_tanks_id into tankgroup 
          select new 
          { 
           tank = tankgroup.Key, 
           maxdate = tankgroup.Max(tbl_electrolyte => 
                tbl_electrolyte.date_active) 
          }).Union(//New Linq Query that has the same select statement); 

确保每个查询中的选定变量与常规SQL联盟相匹配。