2009-05-05 17 views
14

Bir döviz kuru tablosuna sahibim. Mevcut oranı ve önceki hızı almalı ve sonuçları karşılaştırmalıyım.linq to sql için ikinci kayıt alma

FirstOrDefault kullanarak ilk kaydı alabilirim.

ElementAtOrDefault'ı kullanırken, "Sorgu operatörü 'ElementAtOrDefault' desteklenmiyor" hatası görüntüleniyor. İkinci kaydı nasıl alabilirim?

cevap

31

Bu deneyebilirsiniz sonra ikinci elemanı seçin. unsuru değilse

3

Eğer

.Take(2) 

Eğer birinci ve ikinci alacak kullanın.

Düzelt- hem birinci hem ikinci gerekiyorsa, o zaman yukarıdaki iki kez Sorgunuzla koşuyoruz daha verimli olacaktır:

var query=data.Skip(1).Take(1); 
+2

Veya Atla (1) .Take (1) sadece 2. almak için. – Blorgbeard

1

Seç üst 2:

.Take(1) 
.Skip(1).Take(1) 
0

kullanımı .Skip (1) yöntemi

5

Al() boş (böylece FirstOrDefault eşdeğerdir()). Bunun yerine bir istisna) (Birinci gibi (değil orada ikinci eleman Cos) atıldı olsaydın

sonra kullanın:, Skip(1).Take(1) bir Element döndürür FirstOrDefault:

Skip(1).Single() 
4

değil açıkça Burada sözü bir detay var 1 elemandan oluşan bir set döndürür; Yani Skip(1).Take(1) tarafından döndürülen tür IEnumerable, FirstOrDefault ise değildir.

3

bu koleksiyonda ikinci rekor alıp bunu

var query= (from p in db.Person where p.Person == person_id select p); 
var firstResult = query.First(); 
var secondResult = query.Skip(1).Take(1).Single(); 
var thirdResult = query.Skip(2).Take(1).Single(); 
1
Collection.ElementAt(1) 

yararlı olabilir bu basit uygulama deneyin.