2012-02-22 5 views
0

基準によってレコードを検索し、彼らはいくつかの同じフィールド(LINQ)を持っている場合は1つだけ選択

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回の記録(日付)。しかし、最初の2つの記録は同じイベントです。 結果には、3と(1または2)の2つのレコードのみが必要です。
どうすればいいですか?
ありがとうございます。

P.S.私はこの目的のためにSimillarIdを紹介しましたが、それを使ってクエリを構築する方法はわかりません。

P.S.2。必要なら質問名を変更してください。

答えて

2

使用.Distinct()

1

これを試してください:あなたが最初に実装する必要が引数として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 'を実装する必要があります。これがあなたにとって実現可能かどうかわかりません。 –

関連する問題