我的LINQ学的是不是太简单了

1、什么对象可以使用LINQ?

(答案:实现IEnumerable接口的类和数组,数组隐式的实现了IEnumerable接口,再来一个专业的说法:查询任何可枚举的集合

  • IEnumerable:IEnumerable通过GetEnumerator()得到IEnumerator
  • IEnumerator:有一个Object类型Current属性,一个bool类型的MoveNext()方法,一个void的Reset()方法
  • IEnumerable<>:继承IEnumerator,有个GetEnumerator()方法获取IEnumerator<>
  • IEnumerator<>:继承 IEnumerator, IDisposable,有个Current属性

2、 LINQ的几种语法(我就用一种)

  • LINQ to ADO.net(没写过)

    ​ 1.LINQ to SQL

    ​ 2.LINQ to DataSet

  • LINQ to Objects(这种跟写SQL差不多)

    ​ 1.数组Array和ArrayList

    ​ 2.泛型列表List

    ​ 3.泛型字典Dictionary

  • LINQ to XML(没写过)

  • LINQ to Lambda(LINQ的拓展方法,我最喜欢的用法)

     1.优点:简单,直接使用方法即可,例如Where,FirstDefault,OrderBy,OrderByDescending等等
    

    来个LINQ to Lambda的例子

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqIndex
{
    class Program
    {
        static void Main(string[] args)
        {
            //获取Users
            IEnumerable<User> users = LinqDemo.GetUsers();
            LinqDemo.Println(users);
            Console.WriteLine("------------");
            //获取第一个Users
            User user = LinqDemo.GetFirstUser();
            LinqDemo.Println(user); 
            Console.WriteLine("------------");
            //倒序Users
            IEnumerable<User> desc = LinqDemo.GetUsersOrderByDesc(x => x.Id);
            LinqDemo.Println(desc);
        }
    }
    public class LinqDemo
    {
        private static List<User> Users = new List<User>
        {
            new User(){Id=1,Name="大锤",Age=20, },
            new User(){Id=2,Name="李二",Age=21, },
            new User(){Id=3,Name="张三",Age=22, },
            new User(){Id=4,Name="王四",Age=23, },
            new User(){Id=5,Name="赵五",Age=24, },
        };
        public static User GetFirstUser()
        {
            return Users.FirstOrDefault();
        }

        public static IEnumerable<User> GetUsers()
        {
            return Users;
        }

        public static IEnumerable<User> GetUsersOrderByDesc(Func<User, object> descCondition)
        {
            return Users.OrderByDescending(descCondition);
        }

        public static void Println(IEnumerable<User> users)
        {
            foreach (User user in users)
            {
                Console.WriteLine($"ID:{user.Id},Name:{user.Name},Age:{user.Age}");

            }
        }
        public static void Println(User user)
        {
            Console.WriteLine($"ID:{user.Id},Name:{user.Name},Age:{user.Age}");
        }

    }
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

}

1668584889021

posted @ 2022-11-16 15:50  loil  阅读(65)  评论(0)    收藏  举报