The quantifier operators  analyse a collection of items on some condition and  return a boolean value if any or all the items in collection satisfy a condition.
 
In linq, We have three types of Quantifier Operators:-
1. All
2. Any
3. Contain
These Quantifier Operators are not supports a query syntax.
1. All:- It is used to check whether all the items in a sequence satisfy a condition or not. If all the items satisfy a condition then it returns true, Otherwise it returns false.
Example:-
IList<Employee> empList = new List<Employee>() { 
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "John", Age = 24 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Steve",  Age = 24 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Bill",  Age = 30 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ram" , Age = 28 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ron" , Age = 35} 
    };
bool result = empList .All(e => e.Age > 20 && e.Age < 30);
Console.WriteLine(result);
 
Output:-
False
Above code will returns a false because all employees are not come between the age of 20-30.
 
2. Any:-  It is used to check whether any item in a sequence satisfy a condition or not. If any  item satisfy a condition then it returns true, Otherwise it returns false.
Example:-
IList<Employee> empList = new List<Employee>() { 
         new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "John", Age = 24 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Steve",  Age = 24 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Bill",  Age = 25 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ram" , Age = 31 } ,
        new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ron" , Age = 35}
    };
bool result = empList .Any(e => e.Age > 24 && e.Age < 30);
Console.WriteLine(result);
 
Output:-
True
 
Above code will returns a true because one of the employee satisfy the condition.
3. Contains:- It is used to check whether a sequence of an items contains a specified item or not. If the specified item exists in sequence of items  then it returns true, otherwise it returns false.
Example:-
IList<int> intList = new List<int>() { 1, 2, 3, 4, 5 };
bool result = intList.Contains(10);  
Console.Write(result );
 
Output:-
False
Above example is used only with the primitive data types. It will not work with a custom class.
For example:-
   IList<Employee> empList = new List<Employee>() {
   new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "John", Age = 24 } ,
   new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Steve",  Age = 24 } ,
   new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Bill",  Age = 25 } ,
    new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ram" , Age = 31 } ,
    new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ron" , Age = 35}
 };
   Employee emp = new Employee(){ EmpName = "Bill"};
   bool result = empList.Contains(std); 
   Console.Write(result);
The above example returns false because contains compares the reference of an object not a value of an object. To compare values of the object we need to create a class which implements a  IEqualityComparer interface.
See the below code:-
class EmpComparer : IEqualityComparer<Employee>
{
        public bool Equals(Employee x, Employeey)
        {
            if ( x.EmpName.ToLower() == y.EmpName.ToLower() )
                  {
                         return true;
                  }
            return false;
        }
        public int GetHashCode(Employee empobj)
        {
            return empobj.GetHashCode();
        }
}
In the above code we overloads a Contains extension method that takes a second parameter of IEqualityComparer type.
Code:-
IList<Employee> empList = new List<Employee>() {
   new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "John", Age = 24 } ,
   new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Steve",  Age = 24 } ,
   new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Bill",  Age = 25 } ,
    new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ram" , Age = 31 } ,
    new Employee() { EmpID = Guid.NewGuid().ToString(), EmpName = "Ron" , Age = 35}
 };
Employee emp = new Employee(){ EmpName = "Bill"};
bool result = empList.Contains(emp, new EmpComparer()); 
Now, the above code returns a true result.
 
                       
                    
0 Comment(s)