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

的最高版本出价