З'єднання декількох вхідних послідовностей в одну вихідну 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

З'єднання декількох вхідних послідовностей в одну вихідну



Запит LINQ можна використовувати для створення вихідної послідовності, що містить елементи з декількох вхідних послідовностей. У наступному прикладі показано об'єднання двох структур даних, що знаходяться в пам'яті, але ті саміпринципи можуть застосовуватися для з'єднання даних з джерел XML, SQL або DataSet. Передбачимо, що існують два наступні типи класів:

class Student{ public string First { get; set; } public string Last {get; set;} public int ID { get; set; } public string City { get; set; } public List<int> Scores;}class Teacher{ public string First { get; set; } public string Last { get; set; } public int ID { get; set; } public string City { get; set; }}

У наступному прикладі показаний запит:

class DataTransformations{ static void Main() { // Створення першого джерела даних List<Student> students = new List<Student>() { new Student {First="Светлана" Last="Омельченко" ID=111 City="Москва" Scores= new List<int> {5, 4, 5, 3}}, new Student {First="Кристина" Last="Лаврова" ID=112 City="Тюмень" Scores= new List<int> {5, 3, 3, 4}}, new Student {First="Иван" Last="Моргунов" ID=113 City="Новосибирск" Scores= new List<int> {5, 5, 5, 4}}, }; // Створення другого джерела даних List<Teacher> teachers = new List<Teacher>() { new Teacher {First="Анна", Last="Виннер", ID=945, City = "Москва"} new Teacher {First="Алексей", Last="Иващенко", ID=956, City = "Санкт-Петербург"} new Teacher {First="Михаил", Last="Антонов", ID=972, City = "Смоленськ"} }; // Створення запиту var peopleInMoscow = (from student in students where student.City == "Москва" select student.Last) Concat(from teacher in teachers where teacher.City == "Москва" select teacher.Last); Console.WriteLine("Наступні студенти і вчителі живуть в Москві:"); // Виконання запиту foreach (var person in peopleInMoscow) { Console.WriteLine(person); } Console.WriteLine("Натискуйте будь-яку кнопку для виходу!"); Console.ReadKey(); }}/* На виході буде отримано: Наступні студенти і вчителі живуть в Москві: Омельченко Віннер*/Повний текст програми

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Link1

{

class Student

{

public string First { get; set; }

public string Last { get; set; }

public int ID { get; set; }

public string City { get; set; }

public List<int> Scores;

}

class Teacher

{

public string First { get; set; }

public string Last { get; set; }

public int ID { get; set; }

public string City { get; set; }

}

 

class Program

{

static void Main(string[] args)

{

// Створення першого джерела даних

List<Student> students = new List<Student>()

{

new Student {First="Светлана"

Last="Омельченко"

ID=111

City="Москва"

Scores= new List<int> {5, 4, 5, 3}},

new Student {First="Кристина"

Last="Лаврова"

ID=112

City="Тюмень"

Scores= new List<int> {5, 3, 3, 4}},

new Student {First="Иван"

Last="Моргунов"

ID=113

City="Новосибирск"

Scores= new List<int> {5, 5, 5, 4}},

};

// Створення другого джерела даних

List<Teacher> teachers = new List<Teacher>()

{

new Teacher {First="Анна", Last="Виннер", ID=945, City = "Москва"}

new Teacher {First="Алексей", Last="Иващенко", ID=956, City = "Санкт-Петербург"}

new Teacher {First="Михаил", Last="Антонов", ID=972, City = "Смоленськ"}

};

// Створення запиту

var peopleInMoscow = (from student in students

where student.City == "Москва"

select student.Last)

.Concat(from teacher in teachers

where teacher.City == "Москва"

select teacher.Last);

Console.WriteLine("Наступні студенти і вчителі живуть в Москві:");

// Виконання запиту

foreach (var person in peopleInMoscow)

{

Console.WriteLine(person);

}

Console.WriteLine("Натискуйте будь-яку кнопку для виходу!");

Console.ReadKey();

}

}

}



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 196; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.61.16 (0.006 с.)