عملگرهای انتخاب عنصر First و FirstOrDefault
متد First در LINQ اولین عنصر موجود در یک مجموعه (یعنی عنصری که در اندیس صفر قرار دارد) را باز می گرداند. همچنین این متد اولین عنصری که شرط مشخص شده را برآورده کند را نیز باز می گرداند.
متد | توضیحات |
First | اولین عنصر موجود در مجموعه یا اولین عنصری که شرط مشخص شده را برآورده کند را باز می گرداند. |
FirstOrDefault | مشابه متد First عمل می کند با این تفاوت که اگر عنصری پیدا نکند مقدار پیشفرض را باز می گرداند. |
متدهای First و FirstOrDefault دو overload دارند که در زیر مشاهده می کنید:
1 2 3 4 | public static TSource First<TSource>(this IEnumerable<TSource> source); public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate); public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source); public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate); |
اگر از overload اول استفاده کنیم، اولین عنصر موجود در مجموعه را باز میگرداند و اگر از overload دوم استفاده کنیم اولین عنصری که شرط مشخص شده را برآورده کند را باز می گرداند. برای درک بهتر به مثالهای زیر توجه کنید:
1 2 3 4 5 6 7 8 9 | IList<int> intList = new List<int>() { 7, 10, 21, 30, 45, 50, 87 }; IList<string> strList = new List<string>() { null, "Two", "Three", "Four", "Five" }; IList<string> emptyList = new List<string>(); Console.WriteLine("1st Element in intList: {0}", intList.First()); Console.WriteLine("1st Even Element in intList: {0}", intList.First(i => i % 2 == 0)); Console.WriteLine("1st Element in strList: {0}", strList.First()); Console.WriteLine("emptyList.First() throws an InvalidOperationException"); Console.WriteLine("-------------------------------------------------------------"); Console.WriteLine(emptyList.First()); |
خروجی مثال:
1 2 3 4 5 6 | 1st Element in intList: 7 1st Even Element in intList: 10 1st Element in strList: emptyList.First() throws an InvalidOperationException ------------------------------------------------------------- Run-time exception: Sequence contains no elements... |
مثال مربوط به متد FirstOrDefault:
1 2 3 4 5 6 7 8 | IList<int> intList = new List<int>() { 7, 10, 21, 30, 45, 50, 87 }; IList<string> strList = new List<string>() { null, "Two", "Three", "Four", "Five" }; IList<string> emptyList = new List<string>(); Console.WriteLine("1st Element in intList: {0}", intList.FirstOrDefault()); Console.WriteLine("1st Even Element in intList: {0}", intList.FirstOrDefault(i => i % 2 == 0)); Console.WriteLine("1st Element in strList: {0}", strList.FirstOrDefault()); Console.WriteLine("1st Element in emptyList: {0}", emptyList.FirstOrDefault()); |
خروجی مثال:
1 2 3 4 | 1st Element in intList: 7 1st Even Element in intList: 10 1st Element in strList: 1st Element in emptyList: |
هیچ نظری ثبت نشده است