免费邮箱 |加入收藏 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 数据库 > MS Sql Server

LINQ查询基础

时间:2011-05-18 22:26:15  来源:站内  作者:潘春会

LINQ 语言集成查询(Language INtegrated Query)作为.net平台的一项查询技术,给我们的开发带来了极大地方便。本人用2.0的平台时间较长,对LINQ用的不是太多。LINQ查询的数据源:实现IEnumberable<T>接口的对象、关系数据库、数据集(DataSets)以及xml文档。最近偶使用到它,谈谈一下使用基础与体会。

   LINQ与T-Sql语法类似,有一些数据库基础的理解它应该不难。下面主要从我使用到的几个函数等来进行说明。

  1、Except

  2、Cast

  3.  Take、TakeWhile

  4、Skip、SkipWhile

  5、Lambda表达式基础

  首先,还是从最基本的查询语法说起。由于LINQ查询结果是IEnumerable<T>,接收返回结果时定义为var比较简洁。最基本的查询语法为:from [parameters]  in [dataSource] select [result].示例代码和截图还是最直接:

#代码

 int[] arr1 = new int[] {1, 2, 3, 4, 5};

            int[] arr2 = new int[] {1, 2, 5, };

            var result = from a in arr1

                         join b in arr2 on a equals b into list

                         from r in list

                         select r;

            foreach(var v in result)

            {

                Console.WriteLine(v.ToString());

            }

输出结果如下:

 

 

以上的查询是将两个集合中相同的元素查出来,放入到list中,然后再从list中进行查询。

 

在Select中,也可以自定义需要选择的结果。如需要找出两个集合中相同元素的长度,代码如下:

string[] list1 = new string[] {"ab", "bc", "abd", "aaaa"};
            string[] list2 = new string[] { "ab",  "abd", "aabb","bb" };

            var query = from s in list1
                        join m in list2 on s equals m
                        select new {s.Length};
                        foreach( var len in query)
                        {
                            Console.WriteLine(len.Length);
                        }

输出结果如下:

2,3

 

在查询时候用判断元素相等用的是equals,而不是编程语言中的"=="或者T-SQL中的"=",有点特别。

1、Except:返回查询两个集合中差异的元素。

    var dif = arr1.Except(arr2);
            foreach (var item in dif)
            {
                Console.WriteLine(item);
            }

这样dif就包含3,4两个元素

2、Cast:对数据源中元素进行类型转化,转化的目标类型为Cast指定的泛型。

  Console.WriteLine("Cast************");

            object[] obj = new object[] {1,2,3};

            var intResult = obj.Cast<int>();

            foreach( var item in intResult)

            {

                Console.WriteLine("item :{0}",item.GetType().ToString());

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
如何找出DHCP地址池里未使用的IP地址
如何找出DHCP地址池里
国内常用的DNS列表
国内常用的DNS列表
Linux邮件服务器软件比较
Linux邮件服务器软件比
学用纯CSS打造可折叠树状菜单
学用纯CSS打造可折叠树
相关文章
栏目更新
栏目热门