If we have a range of number from 1 to 20 and we want to find odd among them using LINQ.
We have three options for that
- Calling a Predicate
- Anonymous Method
- Lambda
So here we can see that we need to pass a predicate to evaluate the condition.
Calling a Predicate
Function we will pass as predicate is as below
We will pass this function as predicate to find odd numbers from the range of numbers.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication25
{
class Program
{
static void Main(string[]
args)
{
var
result = from r in
Enumerable.Range(1, 20).Where(GetOdd)
select r;
foreach
(var r in
result)
Console.WriteLine(r);
Console.ReadKey(true);
}
static bool GetOdd(int
number)
{
if
(number % 2 != 0)
return
true;
else
return
false;
}
}
}
Output
Using Anonymous Method
We can use anonymous method also
Anonymous method is taking an input parameter and returning a Boolean value.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication25
{
class Program
{
static void Main(string[]
args)
{
var
result = from r in
Enumerable.Range(1,
20).Where(delegate(int
number)
{
if (number % 2 != 0)
return true;
return false;
})
select r;
foreach
(var r in
result)
Console.WriteLine(r);
Console.ReadKey(true);
}
}
}
Output
Using Lambda
To make our query more readable in version 3.0 and
onwards we can use Lambda instead of anonymous method also.
Lambda is very simple returning true when reminder is 0.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication25
{
class Program
{
static void Main(string[]
args)
{
var
result = from r in
Enumerable.Range(1, 20).Where(num =>num%2!=0)
select r;
foreach
(var r in
result)
Console.WriteLine(r);
Console.ReadKey(true);
}
}
}
Output