Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Доп главы ПРГ Лекция 1.docx
Скачиваний:
9
Добавлен:
11.06.2015
Размер:
46.02 Кб
Скачать

Пример 5 . Язык интегрированных запросов linq (с версии c#3)

Задача языка LINQ– облегчить написание запросов для нескольких источников данных. По синтаксису этот язык близок кSQL.

Реализация (С# 3). Фильтрация коллекции

Помимо запросов используется неявно типизированная локальная переменная.

static void Main(string[] args)

{

List<Product> list = Product.GetSampleProducts();

list.ForEach(Console.WriteLine);

Console.WriteLine();

var filtered = from Product p in list

where p.Price > 10

select p;

foreach (Product product in filtered)

{

Console.WriteLine(product);

}

Console.Read();

}

Реализация (С# 4). Запросы XML

using System.Xml;

using System.Xml.Linq;

<?xml version="1.0" encoding="utf-8" ?>

<Data>

<Products>

<Product Name ="West Side Story" Price ="9.99 "/>

<Product Name ="Assasins" Price ="14.99 "/>

<Product Name ="Frogs" Price ="13.99 "/>

<Product Name ="Sweeney Todd" Price ="10.99 "/>

</Products>

</Data>

XDocument doc = XDocument.Load("data.xml");

var filtered = from p in doc.Descendants("Product")

where (decimal)p.Attribute("Price") > 10

select new

{

ProductName = (string)p.Attribute(“Name”);

};

foreach (var v in filtered)

{

Console.WriteLine(v.ProductName);

}

Пример 6. Модель com и динамическая типизация

Главной идей версии С#4 является тема совместимости. Это подразумевает работу как со старой технологией COM, так и с элементами динамических языков, выполняющихся в исполняющей среде динамического языка (DynamicLanguageRuntime–DLR)

Задача 1. Экспорт списка продуктов в электронную таблицу Excel.

Необходимо добавить ссылку проекта на Microsoft.CSharpдля обеспечения внедрения в основной код соответствующих частей основной сборки взаимодействия (PrimaryInteropAssembly–PIA). Более того в свойствах ссылки на пространство именExcelсвойствоImbeded Interop Typeнеобходимо установить в значениеtrue. Типы пространства именInteropстановятся в этом случае динамическими и не требуют явного преобразования.

using Microsoft.Office.Interop.Excel;

var app = new Application{Visible = false};

Workbook workbook = app.Workbooks.Add();

Worksheet worksheet = (Worksheet)app.ActiveSheet;

int row = 1;

foreach (var product in Product.GetSampleProducts().Where(p => p.Price != null))

{

worksheet.Cells[row, 1] = product.Name.ToString();

worksheet.Cells[row++, 2] = product.Price.ToString();

}

workbook.SaveAs(Filename: "F:\\demo.xls",

FileFormat: XlFileFormat.xlWorkbookNormal);

app.Application.Quit();

Литература: Скит Дж. C# Программирование для профессионалов

10