我有一个班级BaseEvent
,它有以下字段:
Name, RecurrenceStart, RecurrenceEnd, SimillarId
例如,我们在表格中有数据:
Name RecurrenceStart RecurrenceEnd SimillarId
Event1 2012-02-21 09:00:00.000 2012-02-28 11:30:00.000 1
Event1 2012-02-21 04:30:00.000 2012-02-28 07:00:00.000 1
Event2 2012-02-21 06:30:00.000 2012-02-29 09:00:00.000 2
我们有以下查询:
var today = DateTime.Now;
return Database.BaseEvents.Where(e => e.RecurrenceStart.Value.Date <= today
&& e.RecurrenceEnd.Value.Date >= today).ToList();
查询返回所有3条记录(当前日期)。但前两个记录是同一个事件。
我想在结果中只有两个记录:3和(1或2)
我怎么能这样做?
谢谢。
P.S。我为此目的介绍了SimillarId,但我不知道如何使用它来构建查询。
P.S.2。如果必要,请更改问题名称。
答案 0 :(得分:2)
使用.Distinct()
作为参数,首先必须先实现IEqualityComparer<BaseEvent>
。
答案 1 :(得分:1)
试试这个:
var today = DateTime.Now;
return Database.BaseEvents.Where(e => e.RecurrenceStart.Value.Date <= today
&& e.RecurrenceEnd.Value.Date >= today)
.GroupBy(v => v.Name).Select(g => g.First()).ToList();