LINQ Orderby Azalan Sorgu


439

Eminim bu nispeten basit olacak.

En son oluşturulan tarihe göre sipariş etmek istediğim bir LINQ sorgusu var.

Görmek:

        var itemList = from t in ctn.Items
                        where !t.Items && t.DeliverySelection
                        orderby t.Delivery.SubmissionDate descending
                        select t;

Ayrıca denedim:

       var itemList = (from t in ctn.Items
                        where !t.Items && t.DeliverySelection
                        select t).OrderByDescending();

ancak bu bir hata verir:

'OrderByDescending' yöntemi için aşırı yük yok 0 bağımsız değişkeni alıyor

Okuduğum kadarıyla, ilk yaptığım yolun işe yarayacağından eminim. Ben sadece bir şey yapar mı ama aynı kalır görmek için artan azalan değiştirmeyi denedim.

Birisi sorguya göz atabilir ve yanlış bir şey yapıp yapmadığımı görebilirse minnettar olurum. Teşekkürler :)

Yanıtlar:


674

Sıralamak için bir Özellik seçmeniz ve bir lambda ifadesi olarak OrderByDescending

sevmek:

.OrderByDescending(x => x.Delivery.SubmissionDate);

Gerçekten de, LINQ ifadenizin ilk sürümü çalışmalıdır. Is t.Delivery.SubmissionDateaslında geçerli tarihleri ile doldurulur?


2
Merhaba optus, Cevabınız için teşekkürler. Sorunun ne olduğunu anladım. Bir paginatedList kullanıyordum ve aslında o yardımcı sınıftan sipariş veriyordum. Zaman sınırı
dolduğunda

175

Bu ilk başarısız olduğunu düşünüyorum çünkü null olan değer sipariş. Teslim yabancı anahtarla ilişkili bir tablo ise, önce bu tabloyu eklemelisiniz, aşağıdaki örnek:

var itemList = from t in ctn.Items.Include(x=>x.Delivery)
                    where !t.Items && t.DeliverySelection
                    orderby t.Delivery.SubmissionDate descending
                    select t;

include, DataLoadOptions ile eşdeğerdir dlo = new DataLoadOptions (); dlo.LoadWith <Items> (i => i.Delivery); ctn.LoadOptions = dlo;
mrosiak

29

Bence ikincisi olmalı

var itemList = (from t in ctn.Items
                where !t.Items && t.DeliverySelection
                select t).OrderByDescending(c => c.Delivery.SubmissionDate);

Ona adil olduğunu düşünüyorum, ben gönderdiğimde yanlış soruyu yazmıştı (yani ikinci son sipariş satırında bırakarak) ve muhtemelen sadece kopya ve lambda OrderByDescending kullanımını göstermek için yapıştırılan.
109221793 17:11

6

Sadece bir nedenden dolayı kullanmayı tercih ettiğim farklı bir formatta göstermek için: İlk yol itemList'inizi bir System.Linq.IOrderedQueryable olarak döndürür

using(var context = new ItemEntities())
{
    var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
                                .OrderByDescending(x => x.Delivery.SubmissionDate);
}

Bu yaklaşım iyidir, ancak doğrudan bir Liste Nesnesine girmesini istiyorsanız:

var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
                                .OrderByDescending(x => x.Delivery.SubmissionDate).ToList();

Tek yapmanız gereken Sorgunun sonuna bir .ToList () çağrısı eklemek.

Dikkat edilmesi gereken bir şey, kafamın üstünden! (Not) ifadesinin Where () çağrısında kabul edilebilir olup olmadığını hatırlayamıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.