首先我们创建2个类,一个Category,一个Product
然后创建2个List的数据源
static List<Category> categories = new List<Category>()

好了,现在我们开始使用LINQ了,下面使用的表达式和方法的结果是一样的,这里的方法指Lambda表达式
l 使用排序
1. 使用排序时使用的显示语句
foreach (var c in orderByResult)

Console.WriteLine("ID={0},Name={1}", c.ID, c.Name);
2. 升序
表达式
var orderByResult = from c in categories
orderby c.ID //默认为升序,也可以在后面加上ascending
select c;
方法
var orderByResult = categories.OrderBy(c=>c.ID);
3. 降序
表达式
var orderByResult = from c in categories
orderby c.ID descending
select c;
方法
var orderByResult = categories.OrderByDescending(c=>c.ID);
4. 多个属性的升序
表达式
var orderByResult = from c in categories

orderby c.ID,c.Name

select c;

方法
var orderByResult = categories.OrderBy(c=>c.ID).ThenBy(c=>c.Name);
5. 多个属性的降序排列
表达式
var orderByResult = from c in categories

orderby c.ID, c.Name descending

select c;

方法
var orderByResult = categories.OrderByDescending(c=>c.ID).ThenByDescending(c=>c.Name);
l 使用Where条件
1. 使用Where的显示语句
foreach (var w in whereResult)

Console.WriteLine("ID={0},Name={1}", w.ID, w.Name);
2. 单个条件
表达式
var whereResult = from c in categories

where c.Name == "Vegetables"

select c;

方法
var whereResult = categories.Where(c => c.Name == "Vegetables");
3. 或条件(sql中的or)
表达式
var whereResult = from c in categories

where c.Name == "Vegetables" || c.ID == 001

select c;

方法
var whereResult = categories.Where(c => (c.Name == "Vegetables" || c.ID == 001));
4. 与条件(sql中的and)
表达式
var whereResult = from c in categories

where c.Name == "Vegetables" && c.ID == 001

select c;
方法
var whereResult = categories.Where(c => (c.Name == "Vegetables" && c.ID == 001));
l 连接
1. 内连接
表达式,注意在表达式中的使用join时相等要使用equals
var innerJoinQuery = from c in categories

join prod in products on c.ID equals prod.CategoryID

orderby c.ID

方法
var innerJoinQuery = categories.Join(products,//要连接的集合

a=>a.ID ,//第一个集合的主键

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

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

2. 左连接
表达式
var leftJoinQuery = from c in categories

join prod in products on c.ID equals prod.CategoryID into cp

方法
l 分组
表达式
var groupResults = from c in categories

group c by c.ID;
方法
var groupResults = categories.GroupBy(c => c.ID);
注意显示时的变化:
foreach (var item in groupResults)

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