Csharp/CSharp Tutorial/LINQ/Nested Query — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 12:18, 26 мая 2010
An untidy nested query
using System;
using System.Collections.Generic;
using System.Linq;
public class MainClass {
public static void Main() {
string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
IEnumerable<string> query =
Enumerable.Select(
Enumerable.OrderBy(
Enumerable.Where(
names, n => n.Contains("a")
), n => n.Length
), n => n.ToUpper()
);
}
}
Nested query list
using System;
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 Role {
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<Role> roles = new List<Role> {
new Role { ID = 1, Role = "Manager" },
new Role { 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 }));
}
}