Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_ПАРАДИГМИ ПРОГРАМУВАННЯ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.32 Mб
Скачать

12.4.2. Вибір підмножини кожного вихідного елементу

Існує два основні способи вибору підмножини кожного елементу у вихідній послідовності.

  1. Щоб вибрати лише один член вихідного елементу, використовуйте звернення до властивостей. У наступному прикладі передбачається, що об'єкт Customer містить декілька відкритих властивостей, включаючи рядок з ім'ям City. При виконанні цей запит створить вихідну послідовність рядків:

  2. var query = from cust in Customers

  3. select cust.City;

  4. Для створення елементів, що містять більше однієї властивості вихідного елементу, можна використовувати ініціалізатор об'єктів або з іменованим об'єктом, або з анонімним типом. У наступному прикладі показано використання анонімного типа для інкапсуляції двох властивостей з кожного елементу Customer:

  5. var query = from cust in Customer

  6. select new {Name = cust.Name, City = cust.City};

12.4.3. Перетворення об'єктів, що знаходяться в пам'яті, в xml

Запити LINQ спрощують перетворення даних між структурами даних в пам'яті, базами даних SQL, наборами даних ADO.NET і потоками або документами XML. Для роботи з XML потрібно підключити простір імен.

using System.Xml.Linq;

У наступному прикладі об'єкти в структурі, що знаходиться в пам'яті перетворяться в XML-элементи:

class XMLTransform

{

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}},

};

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

var studentsToXML = new XElement("Root"

from student in students

let x = String.Format("{0},{1},{2},{3}", student.Scores[0],

student.Scores[1], student.Scores[2], student.Scores[3])

select new XElement("student"

new XElement("First", student.First)

new XElement("Last", student.Last)

new XElement("Scores", x)

)

);

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

Console.WriteLine(studentsToXML);

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

Console.ReadKey();

}

}

Код формує наступні вихідні XML-данні:

<Root>

<student>

<First>Светлана</First>

<Last>Омельченко</Last>

<Scores>5,4,5,3</Scores>

</student>

<student>

<First>Кристина</First>

<Last>Лаврова</Last>

<Scores>5,3,3,4</Scores>

</student>

<student>

<First>Иван</First>

<Last>Моргунов</Last>

<Scores>5,5,5,4</Scores>

</student>

</Root>

Фрагмент коду в VS

var studentsToXML = new XElement("Root"

from student in students

let x = String.Format("{0},{1},{2},{3}", student.Scores[0],

student.Scores[1], student.Scores[2], student.Scores[3])

select new XElement("student"

new XElement("First", student.First)

new XElement("Last", student.Last)

new XElement("Scores", x)

)

);

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

Console.WriteLine(studentsToXML);

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

Console.ReadKey();

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]