I just started to get acquainted with the LINQ technology, specifically DLINQ. It should probably be renamed DIMES (D*** It, Make Everything SQL).

It is definitely going to take some getting used to, but it is a cool concept.

In listing 1, I load a Typed DataSet for the Microsoft Access FPNWIND database using two adapters: ProductsTableAdapter and CustomersTableAdapter. All of the adapter and typed dataset code was generated for me courtesy of Data->Add New Data Source.

My first DLINQ statement gets all the cities fron the Customers table and spits them out to the console.

Here is the link statements. First I constructed a query from a typed data row. Then I performed the LINQ Query and finally I just spit out the results of the query to the console:

Listing 1: Getting Data Into a Query and Using LINQ

var customerQuery = ds.Customers.ToQueryable<LINQConsoleApplication1.FPNWINDDataSet.CustomersRow>;

var query = from customer in customerQuery select customer.City;

Here is the full code for performing the list of cities to the console window:

using System;
using System.Collections.Generic;
using System.Text;
using System.Query;
using System.Xml.XLinq;
using System.Data.DLinq;
using System.Data;
using LINQConsoleApplication1.FPNWINDDataSetTableAdapters;

namespace LINQConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
FPNWINDDataSet ds = new FPNWINDDataSet();
FPNWINDDataSetTableAdapters.CustomersTableAdapter customerAdapter = new CustomersTableAdapter();

FPNWINDDataSetTableAdapters.ProductsTableAdapter productAdapter = new ProductsTableAdapter();
customerAdapter.Fill(ds.Customers);
productAdapter.Fill(ds.Products);
var customerQuery = ds.Customers.ToQueryable<LINQConsoleApplication1.FPNWINDDataSet.CustomersRow>();
var productQuery = ds.Products.ToQueryable<LINQConsoleApplication1.FPNWINDDataSet.ProductsRow>();
var query = from customer in customerQuery select customer.City;
foreach (var item in query)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}

What if I only want cities beginning with M? Then try:

var query = from customer in customerQuery where (customer.City[0] == 'M') select customer.City;

What if I want to see company name and the city? Here you go:

var query = from customer in customerQuery where (customer.City[0] == 'M') select customer.CompanyName.PadRight(50) + customer.City;

This gives the output:

What if we want all products that are going to cost us more than 39 dollars? Try:

var query = from product in productQuery where (product.UnitPrice > 39) select product.ProductName.PadRight(50) + product.UnitPrice;

Stay tuned for more fun with LINQ where we use the relationship between two tables to get our data.

-Mike