走进Linq-Linq大观园
系列文章导航:
不能不说的C#特性-迭代器(下),yield以及流的延迟计算
走进Linq-Linq to SQL How do I(1)
走进Linq-Linq to SQL How do I(2)
走进Linq-Linq to SQL How do I(3)
走进Linq-Linq to SQL源代码赏析 Table
走进Linq-Linq to SQL源代码赏析之Provider的初始化
走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq
废话那么多了,还是来几个HelloWorld式的程序吧
HelloWorld Linq
(下面所有程序的Book就是本系列文章中第一篇所出现的Book类)
有一个Book集合,但是这个集合具体存储哪里我们并不清楚,也许在内存,也许在数据库,也许在XML存储,我们要做的就是把价格大于50的给揪出来,然后按照价格排序。
Linq to Objects(从内存中的集合里查找)
数据准备阶段
//这样的一个集合,存储在内存中
IList<Book> books = new List<Book> {
new Book { Title = "Inside COM", ISBN = "123-456-789",Price=20 },
new Book { Title = "Inside C#", ISBN = "123-356-d89",Price=100 },
new Book { Title = "Linq", ISBN = "123-d56-d89", Price = 120 }
};
IList<Book> books = new List<Book> {
new Book { Title = "Inside COM", ISBN = "123-456-789",Price=20 },
new Book { Title = "Inside C#", ISBN = "123-356-d89",Price=100 },
new Book { Title = "Linq", ISBN = "123-d56-d89", Price = 120 }
};
数据查询阶段
var result = from book in books
where book.Price > 50
orderby book.Price
select new { Key = book.Title, Value = book.Price };
foreach (var item in result)
Console.WriteLine("Key:{0}-Value:{1}",item.Key,item.Value.ToString());
where book.Price > 50
orderby book.Price
select new { Key = book.Title, Value = book.Price };
foreach (var item in result)
Console.WriteLine("Key:{0}-Value:{1}",item.Key,item.Value.ToString());
Linq to SQL(集合存储在Sql Server)
数据准备阶段,建立数据库表
输入数据
改写一下Book类,这个类是一个映射类,和数据库表做映射,更多内容后面会详细讲解
[Table]
public class Book
{
///
/// 图书名称
///
[Column]
public string Title { get; set; }
///
/// 单价
///
[Column(DbType = "numeric(5, 2)")]
public float Price { get; set; }
///
/// 作者
///
[Column]
public string Author { get; set; }
///
/// ISBN号
///
[Column]
public string ISBN { get; set; }
}
public class Book
{
///
/// 图书名称
///
[Column]
public string Title { get; set; }
///
/// 单价
///
[Column(DbType = "numeric(5, 2)")]
public float Price { get; set; }
///
/// 作者
///
[Column]
public string Author { get; set; }
///
/// ISBN号
///
[Column]
public string ISBN { get; set; }
}
数据查询阶段
DataContext db = new DataContext("Data Source=localhost;Initial Catalog=db;User ID=sa;Password=sa");
var result = from book in db.GetTable<Book>()
where book.Price > 50
orderby book.Price
select new { Key = book.Title, Value = book.Price };
foreach (var item in result)
Console.WriteLine("Key:{0}-Value:{1}",item.Key,item.Value.ToString());
var result = from book in db.GetTable<Book>()
where book.Price > 50
orderby book.Price
select new { Key = book.Title, Value = book.Price };
foreach (var item in result)
Console.WriteLine("Key:{0}-Value:{1}",item.Key,item.Value.ToString());
最后程序运行的结果都是:
真所谓殊途同归啊,不管数据是如何存储的,查询的方式却99%一致。
总结
本篇旨在给大家一个对Linq的大局观认识,没有详细的深入,就算一个总览吧。精彩无需等待,祝大家编程愉快。