Junior — Middle
Тафовутҳои байни усулҳои FirstOrDefault ва SingleOrDefault дар LINQ чист?
sobes.tech AI
Ҷавоб аз AI
Дар LINQ, усулҳои FirstOrDefault ва SingleOrDefault барои интихоби элементҳо аз пайдарпайӣ истифода мешаванд, аммо маънои гуногун доранд:
FirstOrDefaultаввалин элемент-ро дар пайдарпайӣ бармегардонад, агар вуҷуд дошта бошад, дар ғайри ҳол арзиши пешфарз (null барои намудҳои истинодӣ) бармегардонад.SingleOrDefaultяк танҳо элемент-ро дар пайдарпайӣ бармегардонад, агар дақиқ якта бошад, дар ғайри ҳол:- Агар ягон элемент набошад, арзиши пешфарзро бармегардонад.
- Агар бештар аз як бошад, истиснои
InvalidOperationException-ро партояд.
Масалан:
var numbers = new List<int> { 1, 2, 3 };
var first = numbers.FirstOrDefault(); // бармегардонад 1
var single = numbers.SingleOrDefault(); // истисно партояд, зеро бештар аз як элемент дорад
var empty = new List<int>();
var firstEmpty = empty.FirstOrDefault(); // бармегардонад 0 (аз пешфарз барои int)
var singleEmpty = empty.SingleOrDefault(); // ҳам 0
var singleItem = new List<int> { 42 };
var singleValue = singleItem.SingleOrDefault(); // бармегардонад 42
Хулоса:
- Агар мехоҳед аввалин элемент ё null-ро, агар ягон набошад, гиред,
FirstOrDefault-ро истифода баред. - Агар интизоред, ки танҳо як элемент бошад ва хато гирифтан мехоҳед, агар бештар бошад,
SingleOrDefault-ро истифода баред.