通过标准查找记录,并选择只有一个,如果他们有一些均田(LINQ)

问题描述:

我有一个类BaseEvent,它具有以下字段:通过标准查找记录,并选择只有一个,如果他们有一些均田(LINQ)

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条记录(CURREN t日期)。但前两个记录是同一个事件。 我希望在结果中只有两条记录:3和(1或2)。
我该怎么做?
谢谢。

P.S.我为此介绍了SimillarId,但我不知道如何使用它来构建查询。

P.S.2。如果需要更改问题名称。

使用.Distinct()IEqualityComparer<BaseEvent>作为你必须先落实说法。

试试这个:

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(); 
+0

对于'Distinct'的工作,您需要在对象上实现'IEqualityComparer '。我不知道这对你是否可行。 – 2012-02-22 10:20:09