首先我们创建2个类,一个Category,一个Product

LINQ基本操作public class Product
LINQ基本操作

   然后创建2个List的数据源     

LINQ基本操作static List<Category> categories = new List<Category>()
LINQ基本操作

好了,现在我们开始使用LINQ了,下面使用的表达式和方法的结果是一样的,这里的方法指Lambda表达式

l  使用排序

1.         使用排序时使用的显示语句              

LINQ基本操作foreach (var c in orderByResult)
LINQ基本操作
LINQ基本操作                Console.WriteLine(
"ID={0},Name={1}", c.ID, c.Name); 
LINQ基本操作

2.         升序

         表达式

LINQ基本操作 var orderByResult = from c in categoriesLINQ基本操作
LINQ基本操作                            orderby c.ID 
//默认为升序,也可以在后面加上ascending 
LINQ基本操作                            select c;LINQ基本操作

             方法

LINQ基本操作 var orderByResult = categories.OrderBy(c=>c.ID);LINQ基本操作

3.    降序

     表达式    

LINQ基本操作 var orderByResult = from c in categoriesLINQ基本操作
LINQ基本操作                     orderby c.ID descendingLINQ基本操作
LINQ基本操作                     select c;
LINQ基本操作

     方法   

LINQ基本操作var orderByResult = categories.OrderByDescending(c=>c.ID);
LINQ基本操作

4.    多个属性的升序

     表达式

LINQ基本操作var orderByResult = from c in categories
LINQ基本操作
LINQ基本操作                    orderby c.ID,c.Name
LINQ基本操作
LINQ基本操作                    select c;
LINQ基本操作
LINQ基本操作

     方法

LINQ基本操作var orderByResult = categories.OrderBy(c=>c.ID).ThenBy(c=>c.Name);
LINQ基本操作

5.    多个属性的降序排列

     表达式           

LINQ基本操作var orderByResult = from c in categories
LINQ基本操作
LINQ基本操作                    orderby c.ID, c.Name descending
LINQ基本操作
LINQ基本操作                    select c;
LINQ基本操作
LINQ基本操作

     方法

LINQ基本操作var orderByResult = categories.OrderByDescending(c=>c.ID).ThenByDescending(c=>c.Name);
LINQ基本操作

l   使用Where条件

1.    使用Where的显示语句

LINQ基本操作foreach (var w in whereResult)
LINQ基本操作
LINQ基本操作       Console.WriteLine(
"ID={0},Name={1}", w.ID, w.Name);
LINQ基本操作

2.    单个条件

          表达式

LINQ基本操作 var whereResult = from c in categories
LINQ基本操作
LINQ基本操作                           
where c.Name == "Vegetables"
LINQ基本操作
LINQ基本操作                           select c;
LINQ基本操作
LINQ基本操作

          方法

LINQ基本操作var whereResult = categories.Where(c => c.Name == "Vegetables");
LINQ基本操作

3.    或条件(sql中的or

     表达式

LINQ基本操作var whereResult = from c in categories
LINQ基本操作
LINQ基本操作                  
where c.Name == "Vegetables" || c.ID == 001
LINQ基本操作
LINQ基本操作                  select c;
LINQ基本操作
LINQ基本操作

方法

LINQ基本操作var whereResult = categories.Where(c => (c.Name == "Vegetables" || c.ID == 001));LINQ基本操作

4.    与条件(sql中的and

表达式    

LINQ基本操作var whereResult = from c in categories
LINQ基本操作
LINQ基本操作                  
where c.Name == "Vegetables" && c.ID == 001
LINQ基本操作
LINQ基本操作                  select c;
LINQ基本操作

方法

var whereResult = categories.Where(c => (c.Name == "Vegetables" && c.ID == 001));

l   连接

1.    内连接

表达式,注意在表达式中的使用join时相等要使用equals 

LINQ基本操作var innerJoinQuery = from c in categories
LINQ基本操作
LINQ基本操作                     join prod 
in products on c.ID equals prod.CategoryID
LINQ基本操作
LINQ基本操作                     orderby c.ID
LINQ基本操作

方法

LINQ基本操作var innerJoinQuery = categories.Join(products,//要连接的集合
LINQ基本操作

LINQ基本操作             a
=>a.ID ,//第一个集合的主键
LINQ基本操作

LINQ基本操作             b 
=>b.CategoryID , //第二个集合中和第一个集合的主键关联的键,类型需要和第一个集合的主键相同
LINQ基本操作

LINQ基本操作             (c,d) 
=> //c对应于第一个集合中的对象,d对于与第二个集合中的对象,声明2个变量
LINQ基本操作

2.    左连接

表达式

LINQ基本操作var leftJoinQuery = from c in categories
LINQ基本操作
LINQ基本操作                    join prod 
in products on c.ID equals prod.CategoryID into cp
LINQ基本操作

方法

l   分组

表达式

LINQ基本操作var groupResults = from c in categories
LINQ基本操作
LINQ基本操作                           group c by c.ID;
LINQ基本操作

   

方法

LINQ基本操作var groupResults = categories.GroupBy(c => c.ID); 

注意显示时的变化:

LINQ基本操作foreach (var item in groupResults)
LINQ基本操作

由于刚开始学习LINQ,对LINQ的理解并不深,难免有不足之处,请大家见谅!

相关文章: