7

次のように定義されたモデルがあるとしましょう: Foo {Id, Date}

最新の日付でFooを取得できるようにブールラムダ式を作成する方法はありますか? の線に沿って何か(f => f.Date IsLatest)

4

5 に答える 5

21
var latest = model.OrderByDescending(m => m.Date).FirstOrDefault();
于 2012-04-11T10:57:31.543 に答える
4

日付が最新かどうかを判断する式を作成するには、最新の日付を知る必要があります。つまり、次のようになります。

DateTime latestDate = items.Max(f => f.Date);

var latestItems = items.Where(f => f.Date == latestDate);

別のアプローチは、アイテムを並べ替えることです。

var latestItem = items.OrderBy(f => f.Date).First();

または、Aggregateを使用します。

var latestItem = items.Aggregate((d, v) => v.Date > d.Date ? v : d);
于 2012-04-11T10:59:07.390 に答える
3

エンティティの名前に関する情報を提供していない場合(foosここでは想定しています)。このようなもの:

var latest = foos.OrderByDescending(f => f.Date).FirstOrDefault();

そして、最大の日付を持つものが複数ある場合(「最新のフー」と言ったのは知っていますが、ここでのあなたの時間の解像度はわかりません)、実際にはグッファのようなものを追いかけます答え。

どちらのソリューションも、日付列のインデックスから大きなメリットが得られることに注意してください。インデックスがなく、テーブルが大きくなった場合はどうなりますか?その後、それは非常に遅くなる可能性があります。

于 2012-04-11T10:58:18.733 に答える
1

これを試して:

DateTime maxDate = FooCollection.Max(f=>f.Date)
于 2012-04-11T10:57:03.553 に答える
0

次のコードを試すことができます。

List<Foo> fooList = new List<Foo>();

// add the Foo instance in list here
// then apply following to take latest

fooList.OrderByDescending(p => p.Date).Take(1);
于 2012-04-11T11:01:47.097 に答える