一、投影操作符
var query =
from e in db.Employees
where e.FirstName.StartsWith("M")
select e;
var q =
db.Employees
.Where(e => e.FirstName.StartsWith("M"))
.Select(e => e);
当然,你也可以返回单个列,例如:
var query =
from e in db.Employees
where e.FirstName.StartsWith("M")
select e.FirstName;
var query1 =
db.Employees.Where(e => e.FirstName.StartsWith("M"))
.Select(e => e.FirstName);
你也可以返回序列中的某几列,例如:
var query =
(from e in db.Employees
where e.FirstName.StartsWith("M")
select new
{
e.FirstName,
e.LastName,
e.Title
}).ToList();
var query1 =
db.Employees.Where(e => e.FirstName.StartsWith("M"))
.Select(e => new
{
e.FirstName,
e.LastName,
e.Title
})
.ToList();
二、排序操作符
1. OrderBy
var query =
(from e in db.Employees
orderby e.FirstName
select e).ToList();
//方法语法
var q =
db.Employees
.OrderBy(e => e.FirstName)
.ToList();
2. OrderByDescending
OrderByDescending操作符将序列中的元素按照降序排列。用法与OrderBy相同,这里不再演示。
3. ThenBy
ThenBy操作符实现按照次关键字对序列进行升序排列。此操作符的查询语法与方法语法略有不同,以下代码演示了这一点:
//查询语法
var query =
(from e in db.Employees
orderby e.FirstName, e.LastName
select e).ToList();
//方法语法
var q =
db.Employees
.OrderBy(e => e.FirstName)
.ThenBy(e => e.LastName)
.ToList();
4. ThenByDescending
ThenByDescending操作符实现按照次关键字对序列进行降序排列。此操作符的查询语法与方法语法略有不同,以下代码演示了这一点:
//查询语法
var query =
from e in db.Employees
orderby e.FirstName,e.LastName descending
select e;
//方法语法
var q =
db.Employees
.OrderBy(e => e.FirstName)
.ThenByDescending(e => e.LastName)
.Select(e => e);
foreach (var item in query)
{
Console.WriteLine(item.FirstName);
}
5. Reverse
Reverse将会把序列中的元素按照从后到前的循序反转。需要注意的是,Reverse方法的返回值是void,以下代码演示了这一点
//方法语法
var q =
db.Employees
.Select(e => e.FirstName)
.ToList();
q.Reverse();
6. into、let关键字
List<Peo> peoList = new List<Peo>();
peoList.Add(new Peo() { name = "lizhi", city = "shanghai" });
peoList.Add(new Peo() { name = "linqingxia", city = "beijing" });
peoList.Add(new Peo() { name = "liuyifei", city = "shanghai" });
var intoLinq = from num in peoList
group num by num.city into groupnum
where groupnum.Count() >= 2
select new { city = groupnum.Key, number = groupnum.Count() };
foreach(var i in intoLinq)
{
Console.WriteLine(i.city + "---" + i.number);
}
以上示例:into 字面解释意为“打入”,以上事例将遍历proList得到的num筛选出city属性放入groupnum中,这里的groupnam可以看作是一个集合,这个集合存的是city属性。
string[] strings = { "hello world.", "lin qing xia", "wang zu xian" };
var strs = from s in strings
let words = s.Split(' ')
from word in words
let w = word.ToUpper()
select w;
foreach(var s in strs)
{
Console.WriteLine(s);
}
以上示例:将遍历的元素进行处理,并将处理结果存放到words,这里的words也可看作一个集合(可以这样理解,具体自己去发掘 嘿嘿)