2017-07-09 42 views
1

我有一个像下面两个表:(日期格式:MM/DD/YYYY)得到表LINQ所有最新的条目

参数主表:

Id Parameter 
    1  ST 
    2  GP 
    3  Interest  
    4  CC 

和第二TaxValue表:

Date  ParameterId Value 
1/1/2017 1   4 
2/1/2017 1   4.5 
1/15/2017 2   15 
3/20/2017 2   20 
3/21/2017 3   18 
4/28/2017 3   20 
1/1/2017 4   10 

我想编写一个linq查询来获取指定日期的所有最新参数值。

所需的结果:(如果我想获得最新的条目今天)

Date  Parameter Value 
2/1/2017 ST   4.5 
3/20/2017 GP   20 
4/28/2017 Interest 20 
1/1/2017 CC   10 

请帮助!

回答

1

用户OrderByDescending

var result = from n in table 
     group n by n.Value into g 
     select g.OrderByDescending(t=>t.Date).FirstOrDefault(); 
+0

感谢您的回复。我实际上试过,但无法解决错误。我编辑了我的问题..请看看你是否仍然可以通过加入来帮助实际场景。 – vivek

0

你可以做最新的TaxValue记录这样一个连接:

var qry = (from pm in parameterMaster 

      from tax in taxValue.Where(t => t.ParameterId == pm.Id) 
           .OrderByDescending(t => t.Date) 
           .Take(1) 
           .DefaultIfEmpty() 
      select new { 
       date = tax.Date, 
       parameter = pm.Name, 
       value = tax.Value 
      }); 

var results = qry.ToList(); 
0

您可以使用此查询:(我测试了它和它的工作正常)

using (testEntities db = new testEntities()) 
      {    
       var res = from element in 
           (from p in db.Parameters 
           join t in db.TaxValues on p.Id equals t.ParameterId 
           select new { Date = t.Date, Parameter = p.Parameter1, Value = t.Value, ParameterId = t.ParameterId }).ToList() 
          group element by element.ParameterId 
           into groups 
           select groups.OrderBy(p => p.Value).Last(); 
      } 

结果 query

+0

@vivek请注意并接受这个答案,如果它可以帮助你,所以人们知道这是正确的答案,并帮助他们。 –