SORU
18 EKİM 2011, Salı


Seri kodu için bir öğe seçin

Bunun gibi bir sürü kod ile eşleşen bir öğe seçmek için kendimi yazarken buluyorum

var item = (from x in Items where x.Id == 123 select x).First();

Yapmak için daha temiz bir yol onu ya da bunu alacağım gibi özlü var mı?

EDİT: söylememeliydim "daha Temiz bir şekilde kullanarak etmeniz sözdizimi". Zaten lambda sözdizimi farkındaydım ve bu aslında tek yol gibi görünmeye başladı. Cevap veren herkese çok teşekkürler çok yararlı bir bilgi ama olsun, yaptım.

CEVAP
18 EKİM 2011, Salı


Senin gibi nasıl değişir etmeniz sorgu sözdizimi, uzatma yöntemleri doğrudan gibi kullanabilirsiniz:

var item = Items.First(i => i.Id == 123);

Ve eğer eğer liste boş ise hata atmak istemiyorsun. öyleyse element type (başvuru tipleri içinnull) için varsayılan değerini döndürür: FirstOrDefault kullanın

var item = Items.FirstOrDefault(i => i.Id == 123);

if (item != null)
{
    // found it
}

Single() SingleOrDefault() de kullanılabilir, ama eğer okuyarak bir veritabanı veya bir şey zaten garanti teklik olmaz rahatsız olduğu için tarama listesine bak bakalım herhangi çoğaltır ve atar. First() FirstOrDefault() ilk maç dur, daha verimli oluyorlar.

First() Single() ailenin, atarlar burada:

  • First() - atar boş/bulunamadı, yinelenen bir durum değil
  • FirstOrDefault() - dönerse boş/bulunamadı, yinelenen bir durum değilse varsayılan
  • Single() - boş/yinelenen varsa, bulunamadı, atar atar
  • SingleOrDefault() - dönerse boş/yinelenen varsa, bulunamadı, atar varsayılan

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Washington

    Adam Washing

    12 Mayıs 2006
  • RyanXLT

    RyanXLT

    22 Ocak 2011
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006