C# 没有记录时的linq默认值
我正在进行拍卖,如果没有出价,我想将当前价格指定给起始价格。这是我的问题。我怎么能这么做C# 没有记录时的linq默认值,c#,asp.net,.net,asp.net-mvc,linq,C#,Asp.net,.net,Asp.net Mvc,Linq,我正在进行拍卖,如果没有出价,我想将当前价格指定给起始价格。这是我的问题。我怎么能这么做 var model = db.Items .Where(i => i.EndDate > DateTime.Now) .Select(i => new ViewItemViewModel { ItemId = i.ItemId, Title = i.Tit
var model = db.Items
.Where(i => i.EndDate > DateTime.Now)
.Select(i => new ViewItemViewModel
{
ItemId = i.ItemId,
Title = i.Title,
EndDate = i.EndDate,
Description = i.Description,
CurrentPrice = i.Bids.OrderByDescending(b => b.Price).First().Price
}).ToList();
这是重要的一部分
CurrentPrice = i.Bids.OrderByDescending(b => b.Price).First().Price
最简单的方法是只使用内联if(您可以在linq中这样做)
注意如果您要返回数据库(例如使用EF),您可能希望使用
FirstOrDefault()
,因为First()
未在EF linq中实现ViewItemViewModel具有CurrentPrice属性设计setter,因此如果其为null,则获取一些初始值
CurrentPrice = i.Bids.Any() ? i.Bids.OrderByDescending(b => b.Price).First().Price : 27