仅将最新数据投影到linq查询中
好的,问题来了 我有一个表(实际上是一个视图,但它是不相关的),其中包含某个时间项目的价格。字段:仅将最新数据投影到linq查询中,linq,Linq,好的,问题来了 我有一个表(实际上是一个视图,但它是不相关的),其中包含某个时间项目的价格。字段: 项目名称 价格 时间戳 此字段中还有其他字段,这些字段也必须是可访问的。比如列和一些计算过的数字。这基本上是一个带有字段的对象,我们有一个相当长的表(数百万行) 我需要加入一个项目名称列表,列出它们的最新价格,我想在linq中这样做。在纯SQL中,这已经不好玩了。我基本上是寻找一个“视图”(IQueryable用于进一步合并)定义,该定义只包含给定项名称的最新对象。这样就可以将JOIN语句与另
- 项目名称
- 价格
- 时间戳
你知道如何在LINQ中做到最好吗?Lambda,我不喜欢sql风格的语法。在
Linq to objects
中,我会尝试以下方法:
prices
.GroupBy(p => p.ItemName)
.Select(g => new {
Item = g.Key,
LatestPrice = g.OrderByDescending(p => p.Timestamp).First()
});
虽然我不确定它是否会正确映射到SQL。此请求也会完成此任务:
var v = from product in Products
join recentProduct in
(from _product in Products
group _product by _product.Name into _products
select new { Name = _products.Key, TimeStamp = _products.Max(s => s.TimeStamp) })
on new { product.Name, product.TimeStamp } equals new { recentProduct.Name, recentProduct.TimeStamp }
select product);
是的,这就是我提到的自连接方法。我不能说我喜欢结果sql;(