Linq sorgu sözdizimini ne kadar beğendiğinize bağlı olarak, uzantı yöntemlerini doğrudan şu şekilde kullanabilirsiniz:
var item = Items.First(i => i.Id == 123);
Ve liste boşsa bir hata atmak istemiyorsanız FirstOrDefault
, öğe türü için varsayılan değeri döndüren kullanın ( null
başvuru türleri için):
var item = Items.FirstOrDefault(i => i.Id == 123);
if (item != null)
{
// found it
}
Single()
ve SingleOrDefault()
ayrıca kullanılabilir, ancak bir veritabanından veya zaten benzersizliği garanti eden bir şeyden okuyorsanız, herhangi bir yineleme ve atma olup olmadığını görmek için listeyi taraması gerektiğinden rahatsız olmazdım. First()
ve FirstOrDefault()
ilk maçta dur, böylece daha verimli olurlar.
Of First()
ve Single()
onlar atmak nerede ailesi, burada:
First()
- boşsa / bulunmazsa atar, yinelenirse atmaz
FirstOrDefault()
- boşsa / bulunmazsa varsayılan döndürür, yinelenirse atmaz
Single()
- boşsa / bulunmazsa atar, kopya varsa atar
SingleOrDefault()
- boşsa / bulunmazsa varsayılan döndürür, yinelenen varsa atar
Single()
veSingleOrDefault()
EĞER verilerin zaten benzersiz olduğunu bilirsem (örneğin, bu kısıtlamaya sahip bir veritabanından vb.), ÇünküSingle()
olası bir kopyayı bulmak için listenin geri kalanını taramaya zorlar, ama bu benim. Bu noktada benzersizliğinizi güçlendirmeniz gerekiyorsa,Single()
aileyi, yoksaFirst()
aileyi kullanın .