English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Оператор генерации LINQ DefaultIfEmpty

Если вызываемый набор для DefaultIfEmpty() пуст, то метод DefaultIfEmpty() возвращает новый набор с значением по умолчанию.

У DefaultIfEmpty() есть еще один метод перегрузки, который принимает параметр значения, который должен быть заменен значением по умолчанию.

Смотрите следующий пример.

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("Значение: {0}", newList2.ElementAt(0))
Вывод:

Количество: 1
Value:
Количество: 1
Value: None

В предыдущем примере emptyList.DefaultIfEmpty() возвращает новый набор строк, в котором у одного элемента значение null, так как null является значением по умолчанию для строки. Другой способ emptyList.DefaultIfEmpty("None") возвращает набор строк, в котором один из элементов имеет значение "None", а не null.

Ниже приведен пример того, как можно вызвать DefaultIfEmpty в集合е int.

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("Значение: {0}", newList2.ElementAt(0))
Вывод:

Количество: 1
Значение: 0
Количество: 1
Значение: 100

Ниже приведен пример использования метода DefaultIfEmpty() для сложных типов集合.

IList<Student> emptyStudentList = new List<Student>();
var newStudentList1 = studentList.DefaultIfEmpty(new Student());
                 
var newStudentList2 = studentList.DefaultIfEmpty(new Student() { 
                StudentID = 0, 
                StudentName = ""});
Console.WriteLine("Количество: {0}", newStudentList1.Count());
Console.WriteLine("ID студента: {0}", newStudentList1.ElementAt(0));
Console.WriteLine("Количество: {0}", newStudentList2.Count());
Console.WriteLine("ID студента: {0}", newStudentList2.ElementAt(0).StudentID);
Вывод:

Количество: 1
ID студента:
Количество: 1
ID студента: 0