我在WebAPI控制器中有以下LINQ:
MyDate = i.Products.FirstOrDefault().Date
它按预期工作。但是,Products是一个集合,所以可以有很多日期。以上只选择第一个。
我真正想做的是找到最早的日期,并选择那个日期。
看起来怎么样?
答案 0 :(得分:16)
如果您只想要日期而不是整个产品,那么使用Max
或Min
会更清楚。
MyDate = i.Products.Select(x => x.Date).Max()
如果您确实需要该产品,则需要按日期排序,然后选择第一个。
MyProduct = i.Products.OrderBy(x => x.Date).FirstOrDefault()
答案 1 :(得分:4)
这种方式更简洁:
var earlyDate = i.Products.Min(p=>p.Date);
但你确定Product != null
答案 2 :(得分:2)
您可以使用
i.Products.OrderByDescending(x => x.Date).FirstOrDefault().Date;
答案 3 :(得分:2)
这是一个lambda表达式,它将为您提供最小(最早)的日期
DateTime earliestDate = i.Products.Min(p => p.Date);
答案 4 :(得分:1)
按日期排序:
position:fixed
答案 5 :(得分:1)
优化方式是:
i.Products.OrderByDescending(x => x.Date).Select(x => x.Date).FirstOrDefault();
答案 6 :(得分:1)
i.Products.OrderBy(x => x.Date).FirstOrDefault().Date;
必须是orderby而不是orderbydescending。 orderbydescending将首先为您提供最新日期,而order by将首先为您提供最早的日期。
答案 7 :(得分:1)
很简单,如果您需要最早使用OrderBy
并且需要最旧版本,请使用OrderByDescending
。
i.Products.OrderBy(x => x.Date).Select(x => x.Date).FirstOrDefault();
i.Products.OrderByDescending(x => x.Date).Select(x => x.Date).FirstOrDefault();