Sobes.tech
Junior — Middle

LINQ-ում FirstOrDefault և SingleOrDefault մեթոդների տարբերությունները ինչ են?

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

Ամփոփում՝

  • Օգտագործեք FirstOrDefault, երբ ուզում եք ստանալ առաջին տարր կամ null, եթե տարրեր չկան:
  • Օգտագործեք SingleOrDefault, երբ սպասում եք միայն մեկ տարր և ուզում եք սխալ ստանալ, եթե ավելի քան մեկը կա։