我的LINQ学的是不是太简单了
1、什么对象可以使用LINQ?
(答案:实现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; }
}
}

浙公网安备 33010602011771号