0

以下のようなエンティティのリストがあります。

Entity1 { Id=1, From=01/01/2011, To=31/01/2011, Status=true }
Entity2 { Id=1, From=01/02/2011, To=28/02/2011, Status=false}
Entity2 { Id=2, From=01/02/2011, To=28/02/2011, Status=false}
Entity3 { Id=3, From=01/01/2011, To=31/01/2011, Status=true }
Entity4 { Id=4, From=01/01/2011, To=31/01/2011, Status=true }
Entity5 { Id=1, From=01/03/2011, To=31/03/2011, Status=false}
Entity6 { Id=4, From=31/03/2011, To=10/04/2011, Status=false}

開始日が最も古く、最終日が最も遅いエンティティを検索したいと思います。(日付から日付まで全体をカバーするエンティティ)

基本的に、日付と日付が異なるエンティティを取得する必要があります。また、開始エンティティは最も古い開始日を持ち、最後のエンティティは最も新しい終了日を持っている必要があります

この場合、期待される結果は、2011年1月1日から2011年4月10日までのエンティティです

アップデート

Entity 1 has the oldest from date : 01/01/2011
Entiry 2 which falls under : 01/01/2011 and 10/04/2011
Entity 3 which falls under 01/01/2011 and 10/04/2011(but entity 1 has same from and to date as Entity3 so entity 3 not a valid)
Entity 4 which falls under 01/01/2011 and 10/04/2011(but entity 1 has same from and to date as Entity4 so entity 4 not a valid)
Entity 5 which falls under : 01/01/2011 and 10/04/2011
Entity 6 has the most recent To date : 10/04/2011
So Valid entries are Entity1, Entity2, Entity5, Entity6

私はこのようなことを試みました

var dates = (EntityList.GroupBy(offer => offer.id)
             .Select(group =>
                 new { offerid = group.Key,
                       offers = group.OrderBy(o => o.From)
                       })
             .OrderBy(g => g.offers.First().From) 
        . FirstOrDefault
 ().offers.First();  

グループ化せずにやるべきだと思いますが、よくわかりません

どんな助けでもありがたいです

ありがとう

4

2 に答える 2

0
var dates = from e in EntityList
            orderby e.Id
            group e by new { e.From, e.To } into g
            select g.First();

クエリは、同じ開始日から終了日までのグループから最初の(ID順に)エンティティのみを返します。

于 2012-10-23T15:46:05.650 に答える
0

次のようなものを使用できませんでした:

var selectedEntity = EntityList.OrderBy(e => e.From)
                               .ThenByDescending(e => e.To)
                               .FirstOrDefault();

アップデート:

Distinctメソッドを使用できますか?

var selectedEntity = EntityList.OrderBy(e => e.From)
                               .ThenByDescending(e => e.To)
                               .Distinct();
于 2012-10-23T16:01:34.107 に答える