I've used LINQ to objects for ever, but have stayed away from LINQ to sql for a while, because we don't exclusive use SQL Server.
I recently began toying with the System.Data.DataSetExtensions, and realized LINQ was a much faster (easier to code anyways) way to get the value from a DataColumn out of a DataTable.
Let's say I have a table of persons names, and I want to get the last name where the person_id = 100. I used to do something like this:
var persons = new DataTable();
string lastName = string.Empty;
DataRow[] foundRows = persons.Select("Person_Id = 100");
if (foundRows.Length == 1)
{
lastName = foundRows[0]["Last_Name"].ToString();
}
now with LINQ, I have created the following method:
public static T GetFirstResultValue<t,ty>(DataTable table,string colToSearch, string colToReturn, TY searchValue) where TY: IComparable
{
T ret = default(T);
IEnumerable<datarow> rows = from row in table.AsEnumerable()
where row.Field<ty>(colToSearch).CompareTo(searchValue) == 0
select row;
if (rows.Count() == 1)
{
ret = (T) rows.First()[colToReturn];
}
return ret;
}</ty></datarow>
This particular method will only work if the results of the search return 1 row, but it could easily be tweaked to return the DataRow collection, or an IEnumerable list of column values for the found rows.
Hope this helps someone!