2012-02-22 34 views
0

我有一個類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。如果需要更改問題名稱。

回答

2

使用.Distinct()IEqualityComparer<BaseEvent>作爲你必須先落實說法。

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

對於'Distinct'的工作,您需要在對象上實現'IEqualityComparer '。我不知道這對你是否可行。 – 2012-02-22 10:20:09

相關問題