从表linq获取所有最新条目

时间:2017-07-09 09:30:06

标签: c# entity-framework linq linq-to-sql linq-to-entities

我有两张如下表:(日期格式:mm / dd / yyyy)

参数主表:

   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

请帮助!!

3 个答案:

答案 0 :(得分:1)

用户 OrderByDescending

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

答案 1 :(得分: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();

答案 2 :(得分: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