linq学习笔记(3):Where

    前面学习了LinqDataContext的基础知识,你可能会觉得手工定义和数据库中表对应的实体类很麻烦,不用担心,VS2008提供了自动生成实体类以及关系的工具。下面我们利用VS2008来创建DataContext,首先,右键点击项目,选择添加新项,然后选择“Linq to sql 类”,命名为DataCity.dbml。然后打开DataCity.dbml。设计视图上的文字提示你可以从服务器资源管理器或者攻击箱拖动项到设计界面上来创建实体类。那么,我们就在服务器资源管理器中创建一个指向DataCity数据库的数据连接,然后把DB_City表拖动到DataCity.dbml的设计视图上,按CTRL+S保存。打开DataCity.designer.cs可以发现系统自动创建了DataCity数据库中DB_City表的映射。 接下来,我们开始从LINQ to SQL语句入手,来全面了解一下LINQ,就从最简单的Where说起吧,这个在编写程序中也最为常用。

    
WHERE:SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:
    1.简单形式:
        var CityList = 
                from City 
in dc.DB_City 
                
where City.Pid == 0 
                select City;
    对应SQL语句:
SELECT [t0].[CityID], [t0].[Pid], [t0].[CityName], [t0].[IsVisible], [t0].[IsLastNode], [t0].[Order] AS [Order], [t0].[MetaID], [t0].[CityType], [t0].[ListName]
FROM [dbo].[DB_City] AS [t0]
WHERE [t0].[Pid] 
= @p0
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [0]
        2.关系条件形式:
    
        var CityList =
                from City 
in dc.DB_City
                
where City.Pid == 0 && City.IsVisible==true
                select City;
    对应SQL语句:
SELECT [t0].[CityID], [t0].[Pid], [t0].[CityName], [t0].[IsVisible], [t0].[IsLastNode], [t0].[Order] AS [Order], [t0].[MetaID], [t0].[CityType], [t0].[ListName]
FROM [dbo].[DB_City] AS [t0]
WHERE ([t0].[Pid] 
= @p0) AND ([t0].[IsVisible] = @p1)
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [0]
-- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [1]

        var CityList =
                from City 
in dc.DB_City
                
where City.Pid == 0 || City.CityType == 2
                select City;
    对应SQL语句:
SELECT [t0].[CityID], [t0].[Pid], [t0].[CityName], [t0].[IsVisible], [t0].[IsLastNode], [t0].[Order] AS [Order], [t0].[MetaID], [t0].[CityType], [t0].[ListName]
FROM [dbo].[DB_City] AS [t0]
WHERE ([t0].[Pid] 
= @p0) OR ([t0].[CityType] = @p1)
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [0]
-- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [2]
    3.First形式:返回集合中的一个元素,其实质就是在SQL语句中加TOP (1)
var CityList = dc.DB_City.First();
    对应SQL语句:
SELECT TOP (1) [t0].[CityID], [t0].[Pid], [t0].[CityName], [t0].[IsVisible], [t0].[IsLastNode], [t0].[Order] AS [Order], [t0].[MetaID], [t0].[CityType], [t0].[ListName]
FROM [dbo].[DB_City] AS [t0]

 var CityList = dc.DB_City.First(City=>City.Pid==0);
    对应SQL语句:
SELECT TOP (1) [t0].[CityID], [t0].[Pid], [t0].[CityName], [t0].[IsVisible], [t0].[IsLastNode], [t0].[Order] AS [Order], [t0].[MetaID], [t0].[CityType], [t0].[ListName]
FROM [dbo].[DB_City] AS [t0]
WHERE [t0].[Pid] 
= @p0
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [0]
    呵呵,今天就学习这点,明天继续抽空学习。
posted @ 2008-07-07 16:01  peida  阅读(923)  评论(1编辑  收藏  举报