简体   繁体   English

LINQ to SQL中的SQL查询

[英]SQL query in LINQ to SQL

I am trying to write SQL query in LINQ to SQL but after 4h of trying i gave up. 我试图在LINQ to SQL中编写SQL查询,但是经过4h的尝试后我放弃了。

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

i saw some tips on the stackOverflow but they werent helpful. 我在stackOverflow上看到了一些提示,但是它们没有帮助。

I am using some VERY bad code like: 我正在使用一些非常糟糕的代码,例如:

        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());
        }

Thank you for any advice. 感谢您的任何建议。

Something like this should work: 这样的事情应该起作用:

var rows = Bids
            .GroupBy(b => b.BidId)
            .Select(g => g.OrderByDescending(gg => gg.BidVersion).FirstOrDefault())

With LINQ, it helps sometimes not to think in the 'SQL way', but about what you really want. 使用LINQ,有时可以不用以“ SQL方式”思考,而可以真正考虑想要的内容。 You want the highest version bid for each BidId 您想要每个BidId的最高出价

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM