我有以下表达
var list = techlinks.GetItems().Where(p => p.Status == 1).ToList();
我想更改此设置,以便我选择最早的日期值,例如
var list = techlinks.GetItems().Where(p =>p.Date is earliest && p.Status == 1).ToList();
请告诉我要为p.Date插入最早的内容
谢谢
答案 0 :(得分:17)
您可以使用OrderBy
或OrderByDescending()
按日期对其进行排序:
var list = techlinks.GetItems()
.Where(p => p.Status == 1)
.OrderBy(x=>x.Date).First(); // this will give oldest date
和
var list = techlinks.GetItems()
.Where(p => p.Status == 1)
.OrderByDescending(x=>x.Date).First(); // this will give latest date
答案 1 :(得分:3)
这是另一种方式。
var list=techlinks.GetItems()
.Where(p=>p.Status==1)
.Min(d => d.Date)
.Single();
答案 2 :(得分:2)
如果可能有多个项目都是最早的日期:
var list = techlinks.GetItems()
.Where(p => p.Status == 1)
.OrderBy(x=>x.Date)
.GroupBy(x => x.Date)
.First()
.ToList()
答案 3 :(得分:0)
它稍微取决于GetItems()
techLinks
的作用,但类似的东西应该有效:
var list = techlinks.GetItems().Where(p => p.Date == techlinks.GetItems().Min(x => x.Date) && p.Status == 1).ToList();
如果GetItems()
方法实际上访问了数据库,您可以先存储其结果并使用它两次:
var allItems = techLinks.GetItems();
var list = allItems.Where(p => p.Date == allItems.Min(x => x.Date) && p.Status == 1).ToList();
答案 4 :(得分:0)
如果你只想要1,你可以选择
techlinks.GetItems().Where(p => p.Status == 1).OrderBy(c => c.Date).FirstOrDefault();
否则我会把它分成两个陈述
var date = techlinks.Min(c=>c.Date);
techlinks.GetItems().Where(p => p.Status == 1 && c.Date == date).ToList();
还要注意你的日期是如何插入的,DateTime.Now会添加时间组件,所以可能需要做类似这样的事情
techlinks.GetItems().Where(p => p.Status == 1 && c.Date.Year == date.Year && c.Date.Month == date.Month && c.Date.Day == date.Day).ToList();
答案 5 :(得分:0)
Student student = _context.Set<Student>()
.Where(p => p.StudentID == ID.Value)
.OrderBy(p => p.AddedDate)
.FirstOrDefault();