码迷,mamicode.com
首页 > 其他好文 > 详细

LinQ—基本查询操作符 Select/Where语句

时间:2015-02-24 21:01:26      阅读:964      评论:0      收藏:0      [点我收藏+]

标签:linq   select   where   

LinQ中的基本查询操作和SQL中的功能是一样的,对于其异同点,我们来了解了解:

1)Select

语法:

<span style="font-family:SimHei;font-size:18px;"> public static IEnumerable<TResult> Select<TSource,TResult>(
this IEnumerable<TSource>source,Func<TSource,TResult>selector)</span>
说明:
  • Select方法本身是一个泛型集合扩展方法
  • 它作用于IEnumerable<TSource>类型
  • 它只接受一个Func<TSource,TResult>类型参数
  • Func<TSource,TResult>是一个泛型委托,位于System名字空间下,System Core dll中,在这里selector是一个提取器。

2)Where

语法:

<span style="font-family:SimHei;font-size:18px;">public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource>source,Func<TSource,bool>predicate)</span>

说明:
  • Where方法也是一个泛型扩展方法
  • 它和Select()一样作用于IEnumerable<TSource>类型
  • 它只接受一个Func<TSource,bool>泛型委托参数
  • 在这里predicate是一个判断条件

3)举例:

首先我们来写一个扩展类,为IEnumerablet<string>提供输出的方法

<span style="font-family:SimHei;font-size:18px;"> //扩展类,只要是静态就可以
    public static class ExtraClass
    {
        //为IEnumerablet<string>提供输出的方法
        public static void Print(this IEnumerable<string> ie)
        {
            //获取可遍历的接口
            IEnumerator<string> result = ie.GetEnumerator();
            Console.WriteLine("\n-------------------------------------\n");

            while (result.MoveNext())
            {
                Console.WriteLine(result.Current);
            }
            Console.WriteLine("\n---------------------------------------\n");
        }
    }</span>
写一个泛型集合,为其存放几条数据:
<span style="font-family:SimHei;font-size:18px;">  private void BtnSelect_Click(object sender, EventArgs e)
        {
            //LinQ to Objects
            //泛型集合数据persons
            List<string> persons = new List<string>();
            persons.Add("li si");
            persons.Add("meng meng");
            persons.Add("huo huo");
            persons.Add("niu nan");
            persons.Add("hu hu");
            persons.Add("tu zi");
            persons.Add("huo er");
            persons.Add("huo xu");</span>
这样我们就可以根据选择来显示输出结果:

1、输出person中所有元素:

<span style="font-family:SimHei;font-size:18px;"> //输出person中所有的元素
 var result=persons.Select(p => p);</span>

显示结果:

技术分享

2、输出person中姓huo的(以下三种语句都显示同样的效果)

<span style="font-family:SimHei;font-size:18px;"> //输出person中姓huo的(以下三种语句都必答同样的效果)
    //var result=persons.Where(p=>p.StartsWith("huo"));
   //var result = persons.Select(p=>p).Where(p => p.StartsWith("huo"));
  //var result = persons.Where(p => p.StartsWith("huo")).Select(p=>p);</span>
显示的效果:

技术分享

当然,也可以直接使用Where,利用bool委托参数来执行,

<span style="font-family:SimHei;font-size:18px;">  var result=persons.Where(p=>Judge(p));
            
       result.Print();
        }
        public bool Judge(string s)
        {
            if (s.StartsWith("huo"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }</span>
显示效果一样,但是却直接显示了Where()语句的用法

举得例子也只是一些常用的查询语句,其他的在继续学习中!


LinQ—基本查询操作符 Select/Where语句

标签:linq   select   where   

原文地址:http://blog.csdn.net/huo065000/article/details/43926369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!