SQL 在 LINQ to SQL 中查询
SQL query in LINQ to SQL
我正在尝试在 LINQ 中将 SQL 查询写入 SQL 但在尝试 4 小时后我放弃了。
select B.* from Bid B
join
(
select BidId, max(BidVersion) as maxVersion
from Bid
group by BidId
) X on B.BidId = X.BidId and B.BidVersion = X.maxVersion
我在 Whosebug 上看到了一些提示,但它们没有帮助。
我正在使用一些非常糟糕的代码,例如:
List<Bid> bidEntities = new List<Bid>();
var newest = from bid in _dbContext.Bids
group bid by bid.BidId into groups
select new { Id = groups.Key, Vs = groups.Max(b => b.BidVersion) };
foreach (var group in newest)
{
bidEntities.Add(await _dbContext.Bids.Where(b => b.BidId == group.Id && b.BidVersion == group.Vs).SingleOrDefaultAsync());
}
感谢您的任何建议。
像这样的东西应该可以工作:
var rows = Bids
.GroupBy(b => b.BidId)
.Select(g => g.OrderByDescending(gg => gg.BidVersion).FirstOrDefault())
使用 LINQ,有时不考虑 'SQL way' 而是考虑您真正想要的东西会有所帮助。您想要每个 BidId
的最高版本出价
我正在尝试在 LINQ 中将 SQL 查询写入 SQL 但在尝试 4 小时后我放弃了。
select B.* from Bid B
join
(
select BidId, max(BidVersion) as maxVersion
from Bid
group by BidId
) X on B.BidId = X.BidId and B.BidVersion = X.maxVersion
我在 Whosebug 上看到了一些提示,但它们没有帮助。
我正在使用一些非常糟糕的代码,例如:
List<Bid> bidEntities = new List<Bid>();
var newest = from bid in _dbContext.Bids
group bid by bid.BidId into groups
select new { Id = groups.Key, Vs = groups.Max(b => b.BidVersion) };
foreach (var group in newest)
{
bidEntities.Add(await _dbContext.Bids.Where(b => b.BidId == group.Id && b.BidVersion == group.Vs).SingleOrDefaultAsync());
}
感谢您的任何建议。
像这样的东西应该可以工作:
var rows = Bids
.GroupBy(b => b.BidId)
.Select(g => g.OrderByDescending(gg => gg.BidVersion).FirstOrDefault())
使用 LINQ,有时不考虑 'SQL way' 而是考虑您真正想要的东西会有所帮助。您想要每个 BidId
的最高版本出价