2010-11-02 22 views
8

OptimizeLinQ max Tarihi Aşağıdaki kodu var

+1

Bu kod yazılı olduğu kadar mantıklı değil: dailyDate asla boş kalmayacak ... (DateTime boş olamaz) –

+0

üzgünüm sadece sağım ama max alma ve daha sonra alma sorunu hakkında merak ediyordum denge – Necronet

cevap

14

Kullanım OrderByDescending ve ilk kaydını almak:

initialBalance = ctx.DailyBalances 
    .OrderByDescending(c => c.DailyDate) 
    .Select(c => c.FinalBalance) 
    .FirstOrDefault(); 

o bir O gerektirmez, böylece Bu tür sorgu, SQL Server optimize edilmiştir tüm tablonun tür (n (n) log). DailyDate'da bir dizin varsa, dizindeki son satırı bulacaktır ve bir dizin olmadan doğrusal zamanda çalışan Top N Sort adı verilen optimize edilmiş bir algoritma kullanacaktır. Bununla birlikte, bu sorgu LINQ'dan Objects'e kadar O (n log (n)) olacaktır.

+1

Oldukça emin demek .OrderByDescending (c => c.DailyDate). –

+0

@Chris Shaffer: Evet, teşekkürler! –

+0

Harikasınız. – starmandeluxe

İlgili konular