linq  语言集成查询 ,目的就是在所有对象中可以使用很方便快捷的方式实现查询操作.
最近看了一下感觉很酷,但是现在是预览版,不知道是否可以投入到新项目的使用.
大家说说自己的看法,谢谢.例子:
static void NumQuery()
{
    var numbers = new int[] { 1, 4, 2, 7, 8, 9 };

    var evenNumbers = 
        from p in numbers
        where (p % 2) == 0
        select p;    Console.WriteLine("Result:");
    foreach(var val in evenNumbers)
    {
        Console.WriteLine(val);
    }    Console.ReadLine();
}

解决方案 »

  1.   

    关注中,现在还有比较多的bug,最好别用于正式项目。
      

  2.   

    刚才没注意看楼主的代码,你那个是C#3.0的特性吧,不是Linq项目的内容吧
      

  3.   

    不是C# 3.0的,是linq 2006 预览版的例子.可以应用在.net 2.0上
      

  4.   

    说的不准确,在C# 3.0里面也是这样的,但是同样可以应用在.net 2.0中
      

  5.   

    语言看得很怪,用在web上?如果对于数的查找,.net本来就提供binarysearch。
      

  6.   

    在知道了Linq这个东东之后,楼主这个例子恰好可以用来说明什么时候不应该使用Linq。static void NumQuery()
    {
        int[] numbers = new int[] { 1, 4, 2, 7, 8, 9 };
        int[] evenNumbers = Array.FindAll(numbers,delegate(int x){return (x % 2)== 0;});
        Console.WriteLine("Result:");
        Array.ForEach(evenNumbers,delegate(int x){Console.WriteLine(x);});
        Console.ReadLine();
    }
    杀鸡用牛刀,仅仅因为偷懒(而不是无法获得)而使用类型推断,都是不智之举。
      

  7.   

    ...可能这个例子不太合适,linq不止是用在数组和数字的操作,而是所有的对象都可以使用的...
      

  8.   

    这个例子只是说明linq的操作方式的
      

  9.   

    再比如这个例子,就是对一个对象进行操作的例子
    class Person
    {
        public int Age;
        public string Name;
    }static void ObjectQuery()
    {
        var people = new List<Person>() {
            new Person { Age=12, Name="Bob" }, 
            new Person { Age=18, Name="Cindy" },
            new Person { Age=13 }
        };

        var teenagers = 
            from p in people
            where p.Age > 12 && p.Age < 20
            select p;

        Console.WriteLine("Result:");
        foreach(var val in teenagers)
        {
            Console.WriteLine("> Name = {0}, Age = {1}", val.Name, val.Age);
        }

        Console.ReadLine();
    }
      

  10.   

    现在还没有C#3.0,不过LINQ就是要加入进去的一个部分。LINQ现在只有preview版,用于2.0上的(其实3.0不过就是2.0加上atlas和linq之类的东西而已,没有1.1到2.0那样的区别,至少现在MS是这个意思)
      

  11.   

    什么意思呢?好像没有任何改变:teenagers = people.FindAll(delegate(Person p){return p.Age > 12 && p.Age < 20;});linq在语法上其实还只是个阿斗,用它跟SQL比根本就是败坏SQL,因为SQL之所以动人就是因为可以在一条语句中进行多个数据源的Union操作,而Linq目前还是有意避开了这个。我到是在意Linq引入的几个新的方向,例如:
      类型的自动推断
      输出的结果其实是使用yield而不是直接写入结果集合的。
      

  12.   

    不过觉得lz的问题很奇怪不知道是否可以投入到新项目的使用
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MS的Preview版的任何东西都没有听说稳定的,最狠的就是当年用whidbey preview版时,连打开程序都不停报错……
    而且话由说回来了,现在的系统一般是不会直接将大量的数据放入内存的,这样的话,用linq又怎么样,还不如再数据库中将部分常用数据建到内存中来得方便?我觉得现在linq最有用的,也就是Xlinq了,Dlinq用处还不是很大,仅仅是够cool而已以上仅仅是个人看法,欢迎讨论
      

  13.   

    比如说我们可以把12到20岁的人但是排除岁数x的人名字修改一下标记,同时统计其总数:int x=17;
    int count;
    people.ForEach(delegate(Person p)
      {  if(p.Age > 12 && p.Age < 20 && p.Age<>x)
          {p.Name+="Flag:";count++}
      });
    注意,我不是强调Linq是错误的。实际上我觉得4GL编程语言远比3GL编程语言优越许多。我要说明Linq现在不具有4GL或者大家所知道的关系运算的基本特征(多数据源的Union),所以还是个羸弱的阿斗,何时变得真正有用,还不确定。
      

  14.   

    多谢楼上两位老兄解惑...,真的受益匪浅...的确,linq似乎是在原来的操作上进行封装,感觉DLINQ是一个封装好了的ORM的框架,用它可以不用去关心sql,配置或者其他东西,只要对Linq对象进行查询操作就好了.
    在开发难度上应该算是比之前有所降低,不过现在vs.net对linq语法的调试和编辑支持不够好.xlinq现在还没太多接触,回去好好学习一下.
    同时希望听到更多不同的看法和观点.
      

  15.   

    to sp1234(如果只为活着,还不如不活) 另外我还有一个问题希望可以得到更详细描述,
    "输出的结果其实是使用yield而不是直接写入结果集合的。"
    ...很抱歉,没有看懂这个意思,可否赐教并说明一下这句话的意思?
      

  16.   

    在开发难度上应该算是比之前有所降低,不过现在vs.net对linq语法的调试和编辑支持不够好.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~preview版的东西本来就很多问题,君不见那一条一条的红线?烦都烦死了
    调试就更不用说了所以,拿来玩玩可以,实际的做东西就算了吧还有性能的问题,真的有点“以辞害意”的感觉另外,我为什么觉得XLINQ比较有用一些呢,因为XPATH的查询有的时候让人郁闷,功能太若,找到某些东西之后还需要写一堆代码来处理结果,而XLINQ在这一方就优秀很多了,lz可以试试,如果先前也常使用XPATH的话,就能比较明显的感觉到这一点