Csharp/CSharp Tutorial/LINQ/SingleOrDefault

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

LastOrDefault: Where an Element Is Not Found

<source lang="csharp">using System; using System.Linq; using System.Collections; using System.Collections.Generic; public class Employee {

   public int id;
   public string firstName;
   public string lastName;
   public static ArrayList GetEmployeesArrayList() {
       ArrayList al = new ArrayList();
       al.Add(new Employee { id = 1, firstName = "J", lastName = "R" });
       al.Add(new Employee { id = 2, firstName = "W", lastName = "G" });
       al.Add(new Employee { id = 3, firstName = "A", lastName = "H" });
       al.Add(new Employee { id = 4, firstName = "D", lastName = "L" });
       al.Add(new Employee { id = 101, firstName = "K", lastName = "F" });
       return (al);
   }
   public static Employee[] GetEmployeesArray() {
       return ((Employee[])GetEmployeesArrayList().ToArray(typeof(Employee)));
   }

} public class MainClass {

   public static void Main() {
       Employee emp = Employee.GetEmployeesArray().LastOrDefault(e => e.id == 5);
       Console.WriteLine(emp == null ? "NULL" :
         string.Format("{0} {1}", emp.firstName, emp.lastName));
   }

}</source>

SingleOrDefault after where clause

<source lang="csharp">using System; using System.Linq; using System.Collections; using System.Collections.Generic; public class Employee {

   public int id;
   public string firstName;
   public string lastName;
   public static ArrayList GetEmployeesArrayList() {
       ArrayList al = new ArrayList();
       al.Add(new Employee { id = 1, firstName = "J", lastName = "R" });
       al.Add(new Employee { id = 2, firstName = "W", lastName = "G" });
       al.Add(new Employee { id = 3, firstName = "A", lastName = "H" });
       al.Add(new Employee { id = 4, firstName = "D", lastName = "L" });
       al.Add(new Employee { id = 101, firstName = "K", lastName = "F" });
       return (al);
   }
   public static Employee[] GetEmployeesArray() {
       return ((Employee[])GetEmployeesArrayList().ToArray(typeof(Employee)));
   }

} public class MainClass {

   public static void Main() {
       Employee emp = Employee.GetEmployeesArray().Where(e => e.id == 4).SingleOrDefault();
       Console.WriteLine(emp == null ? "NULL" :
         string.Format("{0} {1}", emp.firstName, emp.lastName));
   }

}</source>

SingleOrDefault: Where an Element Is Not Found

<source lang="csharp">using System; using System.Linq; using System.Collections; using System.Collections.Generic; public class Employee {

   public int id;
   public string firstName;
   public string lastName;
   public static ArrayList GetEmployeesArrayList() {
       ArrayList al = new ArrayList();
       al.Add(new Employee { id = 1, firstName = "J", lastName = "R" });
       al.Add(new Employee { id = 2, firstName = "W", lastName = "G" });
       al.Add(new Employee { id = 3, firstName = "A", lastName = "H" });
       al.Add(new Employee { id = 4, firstName = "D", lastName = "L" });
       al.Add(new Employee { id = 101, firstName = "K", lastName = "F" });
       return (al);
   }
   public static Employee[] GetEmployeesArray() {
       return ((Employee[])GetEmployeesArrayList().ToArray(typeof(Employee)));
   }

} public class MainClass {

   public static void Main() {
       Employee emp = Employee.GetEmployeesArray().Where(e => e.id == 5).SingleOrDefault();
       Console.WriteLine(emp == null ? "NULL" :
         string.Format("{0} {1}", emp.firstName, emp.lastName));
   }

}</source>

SingleOrDefault with object property reference

<source lang="csharp">using System; using System.Linq; using System.Collections; using System.Collections.Generic; public class Employee {

   public int id;
   public string firstName;
   public string lastName;
   public static ArrayList GetEmployeesArrayList() {
       ArrayList al = new ArrayList();
       al.Add(new Employee { id = 1, firstName = "J", lastName = "R" });
       al.Add(new Employee { id = 2, firstName = "W", lastName = "G" });
       al.Add(new Employee { id = 3, firstName = "A", lastName = "H" });
       al.Add(new Employee { id = 4, firstName = "D", lastName = "L" });
       al.Add(new Employee { id = 101, firstName = "K", lastName = "F" });
       return (al);
   }
   public static Employee[] GetEmployeesArray() {
       return ((Employee[])GetEmployeesArrayList().ToArray(typeof(Employee)));
   }

} public class MainClass {

   public static void Main() {
       Employee emp = Employee.GetEmployeesArray().SingleOrDefault(e => e.id == 4);
       Console.WriteLine(emp == null ? "NULL" :
         string.Format("{0} {1}", emp.firstName, emp.lastName));
   }

}</source>

Use SingleOrDefault

<source lang="csharp">using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Linq; public class MainClass{

  public static void Main(){
      int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
      var query = numbers.SingleOrDefault(n => n > 9);
      Console.Write(query);
  }

}</source>