Вторая половина ответов на вопросы (987661), страница 10
Текст из файла (страница 10)
Запросы LINQ поддерживаются к типизированным и к нетипизированным объектам DataSet. Если схема DataSet известна во время разработки приложения, рекомендуется использование типизированного DataSet. В типизированном DataSet в таблицах и строках есть типизированные члены для каждого столбца, которые делают запросы проще и более читаемыми.
В дополнение к стандартным операторам запросов, реализованным в библиотеке System.Core.dll, LINQ to DataSet добавляет некоторые, специфичные для DataSet расширения, которые облегчают запросы через набор объектов DataRow. Эти специфичные дляDataSet расширения включают в себя операторы для сравнения последовательностей строк, а также методы, обеспечивающие доступ к значениям столбцов DataRow.
Запросы LINQ (Language-Integrated Query) работают с источниками данных, которые реализуют интерфейс IEnumerable<T> или интерфейс IQueryable. Класс DataTable не реализует ни один из этих интерфейсов, в связи с этим необходимо вызывать метод AsEnumerable, если в качестве источника в предложении From запроса LINQ используется DataTable.
В следующем примере получаются все активные заказы из таблицы SalesOrderHeader и выводится на консоль идентификатор, дата и номер заказа.
// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);
DataTable orders = ds.Tables["SalesOrderHeader"];
var query =
from order in orders.AsEnumerable()
where order.Field<bool>("OnlineOrderFlag") == true
select new
{
SalesOrderID = order.Field<int>("SalesOrderID"),
OrderDate = order.Field<DateTime>("OrderDate"),
SalesOrderNumber = order.Field<string>("SalesOrderNumber")
};
foreach (var onlineOrder in query)
{
Console.WriteLine("Order ID: {0} Order date: {1:d} Order number: {2}",
onlineOrder.SalesOrderID,
onlineOrder.OrderDate,
onlineOrder.SalesOrderNumber);
}
Запрос локальной переменной инициализирован выражением запроса, которое работает с одним или несколькими источниками данных, путем выполнения одного или нескольких стандартных операторов запроса или, как в случае LINQ to DataSet, операторов, специфичных для класса DataSet. Выражение запроса в предыдущем примере использует два стандартных оператора запроса: Where и Select.
http://msdn.microsoft.com/ru-ru/library/bb386977(v=VS.90).aspx
http://msdn.microsoft.com/ru-ru/library/bb386976(v=VS.90).aspx