I will cover few examples which are using query operators. You can find list of query operators Here
Refer Player class
Code
public class Player
{public string FirstName { get; set; }
public string LastName { get; set; }
public string Country { get; set; }
public int[] Scores { get; set; }
public int ManOfTheSeries { get; set; }
}
Type Filtering
Filtering based on the type.
Code
// FILTERING Console.WriteLine("List of batsmans who have scrored more than 50 runs in their First Match");foreach (Player s in query)
Console.WriteLine(s.FirstName + " " + s.LastName + ": " + s.Scores[0]);
// Keep the console window open in debug mode. //TYPE FILTERING //GET the int data from the type which contains both string and int.object[] sampleObject = {1,2,"Three",4,5,"Six","Seven",
new Player{ FirstName = "Virat", LastName="Kohli", Country="India", Scores = new int[] { 107, 119, 125, 114 }
}
};
//Get the string var queryTypeFilteringString = sampleObject.OfType<string>(); Console.WriteLine(""); Console.WriteLine("String Type");foreach (var item in queryTypeFilteringString)
{Console.WriteLine(item);
}
//Get the Int var queryTypeFilteringInt = sampleObject.OfType<int>(); Console.WriteLine(""); Console.WriteLine("Int Type");foreach (var item in queryTypeFilteringInt)
{Console.WriteLine(item);
}
//Get Playervar queryTypeFilteringPlayer = sampleObject.OfType<Player>();
Console.WriteLine(""); Console.WriteLine("Player Type");foreach (var item in queryTypeFilteringPlayer)
{ Console.WriteLine(item.FirstName + " "+ item.LastName);}
Output
String Type
Three
Six
Seven
Int Type
1
2
4
5
Player Type
Virat Kohli
Press any key to exit.
Compound Form
Below query will provide list of batsmans who have scored century (100) and above.
Code
//Compound Console.WriteLine("List of batsman who have scored Century (100) in their Matches");var queryFilter = playerList
.SelectMany(
p=>p.Scores,
(p,s) => new {Player=p,Score=s}).Where(p => p.Score > 100)
.OrderBy(p=>p.Player.FirstName)
.Select(a => a.Player.FirstName +" "+a.Player.LastName + " " + Convert.ToString(a.Score) );
foreach (string s in queryFilter)
Console.WriteLine(s);
Output
Hashim Amla 165
Mahela Jayawardene 185
Ricky Ponting 180
Ricky Ponting 142
Sachin Tendulkar 200
Sachin Tendulkar 190
Sachin Tendulkar 170
Sachin Tendulkar 150
Press any key to exit.
Sorting
The OrderBy() and OrderByDescending() Methds returns IOrderedEnumerable<TSource>.
Code
//Indian Players with their scores, descending order by LastNamevar sortQuery = playerList
.SelectMany(p => p.Scores,
(p, s) => new { Player = p, Score = s }) .Where(p => p.Player.Country == "India").OrderByDescending(p => p.Player.LastName)
.Select(p => p);
Output
Sachin Tendulkar India 200
Sachin Tendulkar India 190
Sachin Tendulkar India 170
Sachin Tendulkar India 150
Virender Sehwag India 225
Virender Sehwag India 170
Virender Sehwag India 184
Virender Sehwag India 102
Press any key to exit.
Group By
To Group query results based on a key value ,the group clause can be used.
Code
// List of plyers count group by countries var countiresQry = from p in playerListgroup p by p.Country into g
orderby g.Count() >= 2
select new {Country = g.Key,
Count = g.Count()
};
Above Query with Extension methods
var countiresQry = playerList.
GroupBy(p=>p.Country).
OrderByDescending(g=>g.Count()).
ThenBy(g=>g.Key).
Where(g=>g.Count()>1).
Select(g=>new {Country= g.Key, Count=g.Count()});Output
India 2
Australia 2
Sri Lanka 2
South Africa 2
Press any key to exit.
Grouping With Nested Objects
Code
var countiresQry = playerList.
GroupBy(p=>p.Country).
OrderByDescending(g=>g.Count()).
ThenBy(g=>g.Key).
Where(g=>g.Count()>=2).
Select(g=>new {Country= g.Key,
Count=g.Count(),
Players = g.OrderBy(r => r.LastName).Select(r => r.FirstName + " " + r.LastName)});
foreach (var item in countiresQry)
{ Console.WriteLine("Country:{0,-10} Plyer Count:{1}", item.Country, item.Count);foreach (var name in item.Players)
{ Console.Write(" Player Name:{0}\n ",name);}
Console.WriteLine();
}
Output
Country:Australia Plyer Count:2
Player Name:Adam Gilchrist
Player Name:Ricky Ponting
Country:India Plyer Count:2
Player Name:Virender Sehwag
Player Name:Sachin Tendulkar
Country:South Africa Plyer Count:2
Player Name:Hashim Amla
Player Name:Graeme Smith
Country:Sri Lanka Plyer Count:2
Player Name:Mahela Jayawardene
Player Name:Kumar Sangakara
Press any key to exit.
No comments:
Post a Comment