var bidsData = bidderDatas.Select( bd => new BidderDataDTO() {
TenderId = bd.TenderId,
// I think you may want "bd.TenderId" here Ë
ClosingDate = _context.Tenders.FirstOrDefault(x => x.Id == tenderid)?.ClosingDate,
CompanyName = _context.Companies.FirstOrDefault(x => x.Id == x.CompanyId)?.CompanyName,
FullName = _context.Users.FirstOrDefault(x => x.userid == bd.CreatedUser)?.Select(x => $"{x.Firstname} {x.Lastname}")
Price = bd.Price,
Email = _context.Users.FirstOrDefault(x => x.Userid == x.CreatedUser)?.Email
});
请注意,这会创建一个
IEnumerable
而不是a
List
,但这通常
更好的
,如果你
真正地
需要一个你可以打电话的列表
.ToList()
为了得到它。
我们可能可以通过扩展lambda来避免需要调用来进一步提高性能
FirstOrDefault()
在同一个
Users
收集不止一次。但如果我
真正地
关心性能,我会编写原始SQL。我倾向于将linq查询保留给内存中的集合类型,或者只保留最简单的表=>对象映射。