terça-feira, 17 de fevereiro de 2009

.NET Framework 3.5 - LINQ to DataSet

LINQ to DataSet faz com que a busca de dados em [objetos DataSet] se tornem ainda mais fáceis e rápidas.

Este recurso traz maior produtividade e flexibilidade para os desenvolvedores já que trabalham com [Queries] na sua própria linguagem de programação.

LINQ to DataSet expõe, primariamente, os métodos adicionais nas classes [DataRowExtensions] and [DataTableExtensions]. Também se utiliza da arquitetura do ADO.NET 2.0, não tendo a intenção da substituir o ADO.NET 2.0 no código da aplicação.

O relacionamento do [LINQ to DataSet] com o [ADO.NET 2.0] e o [Data Store] é ilustrado no diagrama abaixo:



Querying DataSets Usando LINQ to DataSet

No exemplo abaixo podemos notar a facilidade de busca e manipulação dos dados em um DataSet do ADO.NET 2.0. Como a classe [DataTable] não implementa a interface [IEnumerable(T)], chamamos o método [AsEnumerable] para usar o DataTable com uma [fonte] para a cláusula [From] da LINQ query.

O exemplo busca todos os pedidos [online] da tabela [SalesOrderHeader] e mostra os atributos [order ID], [order date], e [order number] .


[Visual Basic]
' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)

Dim orders As DataTable = ds.Tables("SalesOrderHeader")

Dim query = _
From order In orders.AsEnumerable() _
Where order.Field(Of Boolean)("OnlineOrderFlag") = True _
Select New With { _
.SalesOrderID = order.Field(Of Integer)("SalesOrderID"), _
.OrderDate = order.Field(Of DateTime)("OrderDate"), _
.SalesOrderNumber = order.Field(Of String)("SalesOrderNumber") _
}

For Each onlineOrder In query
Console.Write("Order ID: " & onlineOrder.SalesOrderID)
Console.Write(" Order date: " & onlineOrder.OrderDate)
Console.WriteLine(" Order number: " & onlineOrder.SalesOrderNumber)
Next



[C#]
// 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("OnlineOrderFlag") == true
select new
{
SalesOrderID = order.Field("SalesOrderID"),
OrderDate = order.Field("OrderDate"),
SalesOrderNumber = order.Field("SalesOrderNumber")
};

foreach (var onlineOrder in query)
{
Console.WriteLine("Order ID: {0} Order date: {1:d} Order number: {2}",
onlineOrder.SalesOrderID,
onlineOrder.OrderDate,
onlineOrder.SalesOrderNumber);
}

________________________________
101 Visual Basic LINQ Samples! - http://msdn.microsoft.com/en-us/vbasic/bb688088.aspx

Nenhum comentário:

Postar um comentário

<< Ao enviar um comentário, favor clicar na opção [Enviar por e-mail comentários de acompanhamento para gtezini@gmail.com] >>