"hsNameG.tv", "hsNameH.net", "hsNamel.tv"

};

// Сформировать запрос на получение списка веб-сайтов, группируемых //по имени домена самого верхнего уровня, но выбрать только те // группы, которые состоят более чем из двух членов.

// Здесь ws — это переменная диапазона для ряда групп,

// возвращаемых при выполнении первой половины запроса, var webAddrs = from addr in websites

where addr.LastlndexOf(1.1)    != -1

group addr by addr.Substring(addr.LastlndexOf('.'))

into ws where ws.Count() > 2 select ws;

// Выполнить запрос и вывести его результаты.

Console.WriteLine("Домены самого верхнего уровня " +

"с более чем двумя членами.\п");

foreach(var sites in webAddrs) {

Console.WriteLine("Содержимое домена: " + sites.Key); foreach(var site in sites)

Console.WriteLine ("    "    +    site);

Console.WriteLine();

}

}

}

Эта программа дает следующий результат:

Домены самого верхнего уровня с более чем двумя членами.

Содержимое домена: .net hsNameB.net hsNameC.net hsNameH.net

Как следует из результата выполнения приведенной выше программы, по запросу возвращается только группа .net, поскольку это единственная группа, содержащая больше двух элементов.

Обратите особое внимание в данном примере программы на следующую последовательность операторов в формируемом запросе.

group addr by addr.Substring(addr.LastlndexOf('.'))

into ws where ws.Count() > 2 select ws;

Сначала результаты выполнения оператораgroupсохраняются как временные для последующей обработки операторомwhere.В качестве переменной диапазона в данный момент служит переменнаяws.Она охватывает все группы, возвращаемые операторомgroup.Затем результаты запроса отбираются в оператореwhereс таким расчетом, чтобы в конечном итоге остались только те группы, которые содержат больше двух членов. Для этой цели вызывается методCount (), который являетсяметодом расширенияи реализуется для всех объектов типаI Enumerable.Он возвращает количество элементов в последовательности. (Подробнее о методах расширения речь пойдет далее в этой главе.) А получающаяся в итоге последовательность групп возвращается операторомselect.

Применение оператора let для создания временной переменной в запросе

Перейти на страницу:

Похожие книги