我正在为电影院建立一个预订系统(当然它只是一个小型的学习项目)。
这是我的展示模型:
public class ShowcaseModel
{
public string objectId { get; set; }
public string MovieId { get; set; }
public int Auditorium { get; set; }
public DateTime? StartDate { get; set; }
}
我想以"per day"
形式显示时间表。为了达到这个目的,我得到了DateTime比今天更大的所有Showcases并将它们放入
List< ShowcaseModel >.
现在我不知道如何使用StartDate属性将此列表拆分(分成不同的列表)。
有没有办法实现这个目标?
提前致谢。
答案 0 :(得分:1)
您可以使用GroupBy方法:
List<ShowcaseModel> list = new List<ShowcaseModel>();
//...
var gooupByDay = list.GroupBy(o=>o.StartDate.Value.Date);
答案 1 :(得分:1)
我使用过fixture(只是创建你的类的随机实例)来演示如何获得每个日期的项目列表。
var fixture = new Fixture();
IEnumerable<ShowcaseModel> showCaseModel = fixture.CreateMany<ShowcaseModel>();
IEnumerable<ShowcaseModel> futureShowCases = showCaseModel.Where(s => s.StartDate != null && s.StartDate > DateTime.Now);
// we know none of start dates are null
var groupedShowCases = futureShowCases.GroupBy(s => s.StartDate.Value.Date);
List<Tuple<DateTime, IEnumerable<ShowcaseModel>>> showCasesByDate = new List<Tuple<DateTime, IEnumerable<ShowcaseModel>>>();
foreach (var groupedShowCase in groupedShowCases)
{
var key = groupedShowCase.Key;
showCasesByDate.Add(Tuple.Create(key, groupedShowCase.ToList().AsEnumerable()));
}
答案 2 :(得分:1)
使用Linq GroupBy()
var grouped = list.Where(f=>f.StartDate!= null)
.GroupBy(f => f.StartDate.Value.Date, b => b,
(k, g) => new { Date= k.Date,
Movies= g }).ToList();
假设list
是您的ShowCaseModel