Linq to sql 使用LinqToSql查找每个产品的最新价格
如果我有一个包含 产品ID 价格 日期 我想知道某个日期的最新价格。在Sql中,我可以执行以下操作 ` 从中选择*( 选择(按ProductID按日期描述划分)上的行号()作为行号 ProductID、日期、ProductPrices中的价格 其中日期<@targetDate )诱人的 其中,行数=1 ` 在LinqToSql中是否可以轻松实现这一点?我的所有尝试都以每个产品的sql命令结束?Linq to sql 使用LinqToSql查找每个产品的最新价格,linq-to-sql,Linq To Sql,如果我有一个包含 产品ID 价格 日期 我想知道某个日期的最新价格。在Sql中,我可以执行以下操作 ` 从中选择*( 选择(按ProductID按日期描述划分)上的行号()作为行号 ProductID、日期、ProductPrices中的价格 其中日期
var result=(
var result = (
from context.table where date < targetDate
and ProductID = targetproduct
orderby date descending
select new {ProductID, price, Date}
).Take(1);
来自context.table,其中日期
也许语法并不完美,但您应该注意Take(1),它相当于行数
var query = from product in db.Products
where product.Date < targetDate
orderby product.Date descending
group product by product.ProductID into groups
select groups.First();
var query=数据库中的产品
其中product.Date
可能先调用First
不会起作用,但FirstOrDefault
会起作用-最近有人发现类似情况
编辑:这个解决方案更多地来自于标题而不是SQL(我不完全理解)。它的目的是找到每种产品的最新条目。希望这就是你想要的 我想这可以胜任
var qry = ProductPrices.Where(pp => pp.Date < targetDate)
.Max(pp => pp.Date.Ticks);
var qry=ProductPrices.Where(pp=>pp.Datepp.Date.Ticks);
这是针对单个产品的,而不是针对每个产品的第一个结果。重新阅读后,邮件正文没有明确说明(抱歉),但是的,我正在查找每个产品的最新价格。是的,这很有效。这与我的Linq尝试非常接近,只是select语句有所不同。我使用的是selectnew{groups.Key,details=groups.First()},它似乎会触发多个sql命令,而您的解决方案只对服务器执行一次。非常感谢。