2016-03-24 19 views
1

İki tabloyu sorgulayan ve kayıtları başarıyla döndüren bir LINQ sorgum var. Sadece en son rekoru iade etmesini istiyorum, ama işe almakta zorlanıyorum. Tüm kayıtları bir hata olmadan döndürür.İç birleştirmeyle bir LINQ sorgusunda en son tarihi seçin

Benim sorgu:

var viewModel = from area in db.area 
        join sample in db.sample on area.location_id equals sample.location_id 
        from s in db.sample.OrderByDescending(s => s.sample_date).Take(1) 

        select new AreaViewModel { h_area = area, s_sample = sample }; 

        return View(viewModel); 

Tamamen sıkışmış, büyük takdir yardım! Eğer koleksiyon dönmek isterseniz koleksiyon döndürmez olarak

var viewModel = (from area in db.area 
       join sample in db.sample on area.location_id equals sample.location_id 
       from s in db.sample 
       select new AreaViewModel 
         { 
         h_area = area, 
         s_sample = sample 
         }).OrderByDescending(s => s.s_sample.sample_date) 
         .FirstOrDefault(); 

, o zaman, yerine FirstOrDefault() orada Take(1) kullanabilirsiniz: Yanlış yerde Take() yöntemi aradığınız

cevap

3

, gibi bir şey yazmak zorunda .

+0

Bu harika çalışıyor, şerefe! – emerfan

1

Ben ne ulaşmak için çalışıyoruz bu olduğunu düşünüyorum:

var area= (from area in db.area 
      join sample in db.sample on area.location_id equals sample.location_id 
      orderby sample.sample_date descending 
      select new AreaViewModel { h_area = area, s_sample = sample }).FirstOrDefault(); 

o TOP ekler nedeniyle en yeni rekor alacak FirstOrDefault yönteminin çağrılması (1) Linq tarafından oluşturulan SQL sorgusu sorgu.