我有两张如下表:(日期格式: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
请帮助!!
答案 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();
}