عملگر تولید DefaultIfEmpty
در این بخش متد افزودنی DefaultIfEmpty در زبان کوئری نویسی LINQ را بررسی خواهیم کرد. نحوه عملکرد این متد به این صورت است که اگر مجموعه ای که متد DefaultIfEmpty بر روی آن فراخوانی شده است خالی باشد، به عنوان نتیجه یک مجموعه با مقدار پیشفرض باز میگرداند. همچنین این متد overload دیگری نیز دارد که با استفاده از آن می توانید مقداری که در هنگام خالی بود مجموعه بازگشت داده می شود را مشخص کنید. مثال زیر را در نظر بگیرید:
1 2 3 4 5 6 7 | IList<string> emptyList = new List<string>(); var newList1 = emptyList.DefaultIfEmpty(); var newList2 = emptyList.DefaultIfEmpty("None"); Console.WriteLine("Count: {0}" , newList1.Count()); Console.WriteLine("Value: {0}" , newList1.ElementAt(0)); Console.WriteLine("Count: {0}" , newList2.Count()); Console.WriteLine("Value: {0}" , newList2.ElementAt(0)); |
خروجی مثال:
1 2 3 4 | Count: 1 Value: Count: 1 Value: None |
در مثال فوق، emptyList.DefaultIfEmpty() یک مجموعه از نوع رشته باز گردانده است که شامل یک عنصر با مقدار null است زیرا مقدار پیش فرض برای نوع داده رشته null است. در خط بعد از emptyList.DefaultIfEmpty(“None”) استفاده شده است که به عنوان نتیجه یک مجموعه جدید با یک عنصر و مقدار None بازگشت داده است زیرا ما مشخص کردیم که اگر مجموعه خالی بود مقدار None را به جای مقدار پیشفرض قرار بدهد.
مثال زیر نحوه عملکر این متد بر روی یک مجموعه عددی را نشان می دهد:
1 2 3 4 5 6 7 | IList<int> emptyList = new List<int>(); var newList1 = emptyList.DefaultIfEmpty(); var newList2 = emptyList.DefaultIfEmpty(100); Console.WriteLine("Count: {0}" , newList1.Count()); Console.WriteLine("Value: {0}" , newList1.ElementAt(0)); Console.WriteLine("Count: {0}" , newList2.Count()); Console.WriteLine("Value: {0}" , newList2.ElementAt(0)); |
خروجی مثال:
1 2 3 4 | Count: 1 Value: 0 Count: 1 Value: 100 |
مثال زیر نحوه عملکرد این متد بر روی یک مجموعه با نوع داده پیچیدهتر را نشان می دهد:
1 2 3 4 5 6 7 8 9 | IList<Student> emptyStudentList = new List<Student>(); var newStudentList1 = studentList.DefaultIfEmpty(new Student()); var newStudentList2 = studentList.DefaultIfEmpty(new Student(){ StudentID = 0, StudentName = "" }); Console.WriteLine("Count: {0} ", newStudentList1.Count()); Console.WriteLine("Student ID: {0} ", newStudentList1.ElementAt(0)); Console.WriteLine("Count: {0} ", newStudentList2.Count()); Console.WriteLine("Student ID: {0} ", newStudentList2.ElementAt(0).StudentID); |
خروجی مثال:
1 2 3 4 | Count: 1 Student ID: Count: 1 Student ID: 0 |
هیچ نظری ثبت نشده است