Reputation: 11304
Can I get the latest file within foreach
loop without calculating last
variable using LastOrDefault
?
I don't want to repeat archive.Entries.OrderBy(x => x.LastWriteTime)
2 times
var last = archive.Entries.OrderBy(x => x.LastWriteTime).LastOrDefault();
foreach (var entry in archive.Entries.OrderBy(x => x.LastWriteTime))
{
Console.WriteLine(entry.Equals(last) ? $"latest file: {entry.Name}" : entry.Name);
}
Upvotes: 0
Views: 52
Reputation: 6081
You can break the chain of LINQ queries at any point and resume in another context.
// Note: ToArray() is necessary to prevent double-enumeration in the case of a Queryable set.
// It's not necessary for constructs which are already enumerated
var ordered = archive.Entries.OrderBy(x => x.LastWriteTime).ToArray();
var last = ordered.LastOrDefault();
foreach (var entry in ordered)
{
Console.WriteLine(entry.Equals(last) ? $"latest file: {entry.Name}" : entry.Name);
}
Upvotes: 2