Create Nested query on object list in CSharp
Description
The following code shows how to create Nested query on object list.
Example
using System;//w ww. j av a2 s .c o m
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Reflection;
class Person
{
int _id;
int _idRole;
string _lastName;
string _firstName;
public int ID
{
get { return _id; }
set { _id = value; }
}
public int IDRole
{
get { return _idRole; }
set { _idRole = value; }
}
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
}
class MyRole
{
int _id;
string role;
public int ID
{
get { return _id; }
set { _id = value; }
}
public string Role
{
get { return role; }
set { role = value; }
}
}
class Program
{
static void Main(string[] args)
{
List<Person> people = new List<Person> {
new Person { ID = 1, IDRole = 1, LastName = "A", FirstName = "B"},
new Person { ID = 2, IDRole = 2, LastName = "G", FirstName = "T"},
new Person { ID = 3, IDRole = 2, LastName = "G", FirstName = "M"},
new Person { ID = 4, IDRole = 3, LastName = "C", FirstName = "G"}
};
List<MyRole> roles = new List<MyRole> {
new MyRole { ID = 1, Role = "Manager" },
new MyRole { ID = 2, Role = "Developer" }
};
var query = people
.Where(p => p.ID == 1)
.SelectMany(p => roles
.Where(r => r.ID == p.ID)
.Select(r => new { p.FirstName, p.LastName, r.Role }));
}
}