您的位置:知识库 » 数据库

走进Linq-Linq大观园

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 12:02  阅读: 25119 次  推荐: 5   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进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-How do I(4)拾遗补零篇第一节

走进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 }
};

数据查询阶段

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());

Linq to SQL(集合存储在Sql Server)

数据准备阶段,建立数据库表

输入数据

改写一下Book类,这个类是一个映射类,和数据库表做映射,更多内容后面会详细讲解

[Table]
public class Book
{
    
/// 
    
/// 图书名称
     
/// 
    [Column]
    
public string Title { getset; }
    
/// 
    
/// 单价
     
/// 
    [Column(DbType = "numeric(5, 2)")]
    
public float Price { getset; }
    
/// 
    
/// 作者
     
/// 
    [Column]
    
public string Author { getset; }
    
/// 
    
/// ISBN号
     
/// 
    [Column]
    
public string ISBN { getset; }
}

数据查询阶段

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());

最后程序运行的结果都是:

真所谓殊途同归啊,不管数据是如何存储的,查询的方式却99%一致。

总结

本篇旨在给大家一个对Linq的大局观认识,没有详细的深入,就算一个总览吧。精彩无需等待,祝大家编程愉快。

5
0

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻