2009-12-18 12 views

cevap

5
var myLinqObj = db.MyObjects.Take(1).SingleOrDefault(); 
2

Sadece şöyle .first() veya .FirstOrDefault() kullanabilirsiniz:

Foo foo = query.Select(a => a.Name == "foo").FirstOrDefault(); 
+1

"** ** sorgusu yalnızca bir sonuç döndürür" sorgusu sorulursa, sorgunun birden fazla getirilmesi, hataların işaretlenmesi durumunda tek tek daha etkilidir. –

+0

@Martinho Fernandes Haklısınız, hiç kullanmamıştım Tek –

18
// Will return a default value if no object is found in the DB 
db.Table.SingleOrDefault(x => x.something == someParameter); 

veya

// Will throw an exception if records are not found 
db.Table.Single(x => x.something == someParameter); 

Teşekkür Mehrdad hem çizgiler var ... yorum için güncellendi.

Sorgunuzun birden fazla kaydın döndürülmesiyle sonuçlanması olasıysa, (yorumlarda belirtildiği gibi) Single() ve SingleOrDefault() yanlış yöntemlerdir. Aynı sözdizimini saklarsınız, ancak sırasıyla First() ve FirstOrDefault()'u arayın.

+3

'' .Where (predicate) .Single() 'ile' .Single (predicate) 'kullanabilirsiniz. –

+1

Tek(), sekansta birden fazla öğe varsa, bir istisna oluşturacaktır. Bir istisna atmak istemiyorsanız, First() veya FirstOrDefault() öğesini de kullanabilirsiniz. – LBushkin

+0

@Mehrdad - Değişikliği yaptım, ancak ikisi arasında bir performans farkı var mı? Ben genellikle tercih ederim. Nerede (yüklem) .Single() çünkü niyetimi biraz daha açık bir şekilde ifade ettiğini düşünüyorum. –

5

Sen First veya Single birini kullanabilirsiniz.

First birden fazla satır ya da sadece bir tane olup olmadığını, ilk satır döndürür.

Single tek satır iade edilmesini beklediği ve birden satır varsa bir istisna atar. Bu nedenle, yalnızca bir satırınız olmasını beklerseniz, sorunu hemen görür ve sorunu giderebilmeniz için Single potansiyel olarak daha iyi bir seçimdir.

0

LINQ-to-XML kullanıyorsanız, tek bir öğeye sahip olduktan sonra ekimin Value özelliğini kullanacağını söylediniz.

Ve Select new { *cols* } eğer o bir liste ya da dizi veya tablo. Örnek. ... yeni {c.Name, c.Value};

Bu ipucu, değerleri almanızı sağlamak içindir.