LINQ_1

advertisement
1) Листинг 9.1
// Сформировать простой запрос LINQ.
using System;
using System.Linq;
class SimpQuery
{
static void Main() {
int[] nums =
{ 1, -2, 3, 0, -4, 5 };
// Сформировать простой запрос на получение только
// положительных значений.
var posNums = from n in nums
where n > 0
select n;
Console.Write(
"Положительные значения из массива nums: ");
// Выполнить запрос и отобразить его результаты.
foreach(int i in posNums) Console.Write(i + " ");
Console.WriteLine();
}
}
2)
var posNums = from n in nums
where n > 0
select n;
3) from переменная_диапазона in источник_данных
4) where булево_выражение
5) where n > 0
6) foreach(int i in posNums)
Console.WriteLine(i + " ");
7) Листинг 9.2
// Сформировать простой запрос.
using System;
using System.Linq;
using System.Collections.Generic;
class SimpQuery {
static void Main() {
int[] nums =
{ 1, -2, 3, 0, -4, 5 };
//Сформировать простой запрос на получение только
//положительных значений.
var posNums = from n in nums
where n > 0
select n;
Console.Write(
"Положительные значения из массива nums: ");
//Выполнить запрос и отобразить его результаты.
foreach(int i in posNums)
Console.Write(i + " ");
Console.WriteLine();
// Change nums.
Console.WriteLine("\n“);
nums[1] = 99;
Console.Write(
"Положительные значения из массива nums\n" +
"после изменений в нем: ");
// Выполнить запрос второй раз.
foreach(int i in posNums)
Console.Write(i + " ");
Console.WriteLine();
}
}
8)
Положительные значения из массива nums:
1 3 5
Задать значение 99 для элемента массива nums[l].
Положительные значения из массива nums
после изменений в нем: 1 99 3 5
9)
var posNums = from int n in nums
// ...
10) IEnumerable<int> posNums = from n in nums
where n > 0
select n;
11)
ascending
by
descending
equals
from
group
in
into
join
let
on
orderby
select
where
12)
from
orderby
group
select
join
where
let
13) Листинг 9.3
// Использовать несколько операторов where.
using System;
using System.Linq;
class TwoWheres
{
static void Main()
{
int[] nums = {1, -2, 3, -3, 0, -8, 12, 19, 6, 9, 10};
//Сформировать запрос на получение положительных
//значений меньше 10.
var posNums = from n in nums
where n > 0
where n < 10
select n;
Console.Write("Положительные значения меньше 10: ");
// Выполнить запрос и вывести его результаты.
foreach(int i in posNums)
Console.Write (i + " ");
Console.WriteLine();
}
}
14) Положительные значения меньше 10: 1 3 6 9
15)
where n > 0
where n < 10
16)
var posNums = from n in nums
where n > 0 && n < 10
select n;
17) Листинг 9.4
// Продемонстрировать применение еще одного оператора
where.
using System;
using System.Linq;
class WhereDemo2
{
static void Main()
{
string[] strs = {".com",".net","hsNameA.com",
"hsNameB.net", "test", ".network",
"hsNameC.net", "hsNameD.com" };
//Сформировать запрос на получение адресов Интернета,
//оканчивающихся на .net.
var netAddrs = from addr in strs
where addr.Length > 4 &&
addr.EndsWith(".net",
StringComparison.Ordinal)
select addr;
// Выполнить запрос и вывести его результаты.
foreach(var str in netAddrs)
Console.WriteLine(str);
}
}
18)
hsNameB.net
hsNameC.net
19) orderby элемент порядок
20) Листинг 9.5
// Продемонстрировать применение оператора orderby.
using System;
using System.Linq;
class OrderbyDemo
{
static void Main()
{
int[] nums = { 10, -19, 4, 7, 2, -5, 0 };
// Сформировать запрос на получение значений в
// отсортированном порядке.
var posNums = from n in nums
orderby n
select n;
Console.Write("Значения по нарастающей: ");
// Выполнить запрос и вывести его результаты.
foreach(int i in posNums) Console.Write(i + " ");
Console.WriteLine();
}
}
21) Значения по нарастающей: -19 -5 0 2 4 7 10
22) var posNums = from n in nums
orderby n descending
select n;
23)
orderby элемент_А направление,
элемент_В направление, элемент_С направление, ...
24) Листинг 19.6
// Сортировать результаты запроса по нескольким
// критериям, используя оператор orderby.
using System;
using System.Linq;
class Account {
public string
public string
public double
public string
FirstName { get; private set; }
LastName { get; private set; }
Balance { get; private set; }
AccountNumber { get; private set; }
public Account(string fn, string ln,
string accnum, double b) {
FirstName = fn;
LastName = ln;
AccountNumber = accnum;
Balance = b;
}
}
class OrderbyDemo
{
static void Main()
{
// Сформировать исходные данные.
Account[] accounts =
{ new Account("Том", "Смит", "132CK", 100.23),
new Account("Том", "Смит", "132CD", 10000.00),
new Account("Ральф", "Джонс", "436CD", 1923.85),
new Account("Ральф", "Джонс", "454MM", 987.132),
new Account("Тед", "Краммер", "897CD", 3223.19),
new Account("Ральф", "Джонс", "434CK", -123.32),
new Account("Сара", "Смит", "543MM", 5017.40),
new Account("Сара", "Смит", "547CD", 34955.79),
new Account("Сара", "Смит", "843CK", 345.00),
new Account("Альберт", "Смит", "445CK", -213.67),
new Account("Бетти", "Краммер","968MM", 5146.67),
new Account("Карл", "Смит", "078CD", 15345.99),
new Account("Дженни", "Джонс", "108CK", 10.98)
};
// Сформировать запрос на получение сведений о
// банковских счетах в отсортированном порядке.
// Отсортировать эти сведения сначала по имени, затем
// по фамилии и, наконец, по остатку на счете.
var accInfo = from acc in accounts
orderby acc.LastName,
acc.FirstName,
acc.Balance
select acc;
Console.WriteLine("Счета в отсортированном
порядке: ");
string str = "";
// Выполнить запрос и вывести его результаты.
foreach(Account acc in accInfo) {
if(str != acc.FirstName) {
Console.WriteLine();
str = acc.FirstName;
}
Console.WriteLine(
"{0},{1}\tAcc#: {2}, {3,10:C}",
acc.LastName, acc.FirstName,
acc.AccountNumber,
acc.Balance);
}
Console.WriteLine();
}
}
25)
Счета в отсортированном порядке:
Джонс, Дженни
Номер счета: 108CK,
$10.98
Джонс, Ральф
Джонс, Ральф
Джонс, Ральф
Номер счета: 434CK,
Номер счета: 454MM,
Номер счета: 454CD,
($123.32)
$987.13
$1,923.85
Краммер, Бетти
Номер счета: 968MM,
$5,146.67
Краммер, Тед
Номер счета: 897CD,
$3,223.19
Смит, Альберт
Номер счета: 445CK,
($213.67)
Смит, Карл
Номер счета: 078CD,
$15,345.99
Смит, Сара
Смит, Сара
Смит, Сара
Номер счета: 843CK,
Номер счета: 543MM,
Номер счета: 547CD,
$345.00
$5,017.40
$34,955.79
Смит, Том
Смит, Том
Номер счета: 132CK,
Номер счета: 132CD,
$100.23
$10,000.00
26)
var accInfo = from асc in accounts
orderby acc.LastName, acc.FirstName,
acc.Balance
select acc;
27)
Джонс, Дженни
Номер счета: 108CK,
$10.98
Джонс, Ральф
Номер счета: 434CK, ($123.32)
Джонс, Ральф
Номер счета: 454MM,
$987.13
Джонс, Ральф
Номер счета: 454CD, $1,923.85
28)
var accInfo = from асе in accounts
orderby x.LastName, x.FirstName,
x.Balance descending
select acc;
Джонс, Дженни
Номер счета: 108CK,
$10.98
Джонс, Ральф
Джонс, Ральф
Джонс, Ральф
Номер счета: 454CD,
Номер счета: 454MM,
Номер счета: 434CK,
$1,923.85
$987.13
($123.32)
Download