1. Group子句

  LINQ表达式必须以from子句开头,以select或Group子句结束,所以除了使用select子句也可以使用Group子句来返回元素分组后的结果。Group子句用来查询结果分组,并返回一对象序列。这些对象包含零个或多个与该组的key值匹配的项。

  注意:每个分组都不是单个元素,而是一个序列(也属于集合)。序列的元素类型为IGroup<TKey,Telement>(必须以Group子句结束的LINQ表达式,分组结果类型才为序列,序列的元素类型为IGroup<TKey,TElement>

 static void Main(string[] args)
{
//数据源
List<Custom> my = new List<Custom>()
{
new Custom() { name="上官杜伟",Age=,Table=new List<string>() { "",""} },
new Custom() { name="上官王玥",Age=,Table=new List<string>() { "",""} },
new Custom() { name="黄埔杜伟",Age=,Table=new List<string>() { "",""} },
new Custom() { name="黄埔王玥",Age=,Table=new List<string>() { "",""} }
};
//创建LINQ查询
var query = from a in my
//安装名字的前两个字进行分组
group a by a.name.Substring(,); //输出语句
foreach (var item in query)
{
Console.WriteLine("分组键:{0}",item.Key); }
Console.WriteLine("**********************************"); Console.ReadKey();
}

2.Into子句

  into子句可以用来创建一个临时标识符,将group、join或select子句的结果存储到这个标识符中。

  static void Main(string[] args)
{
int[] arr = new int[] { , , , , , , , , , }; var q = from n in arr
where n > && n<
group n by n % into g //把N%2为分组 存进标识符g中,输出g
from sn in g
select sn; foreach (var item in q)
{
Console.WriteLine(item);
}
Console.ReadKey();

实例2

  

            //数据源
string[] arr = {"杜伟","王玥","于海燕","高冬梅" }; //创建查询语句
var query = from a in arr
group a by a.Substring(,) into f
//根据条件输出分组后的结果
from b in f
select b;
//输出结果
foreach (var item in query)
{
Console.WriteLine(item);
}
Console.ReadKey();

3.OrderBy子句(中间无空格)

  orderby 子句可使返回的查询结果按升序或降序排序。升序关键字Ascending指定,而降序有关键字Descending指定。

示例1.

  

static void Main(string[] args)
{ //数据源
int[] arr = {,,,,,,,,,}; //创建查询语句
var query = from a in arr
orderby a descending
select a;
//输出结果
foreach (var item in query)
{
Console.WriteLine(item);
}
Console.ReadKey();
}

示例2

  

  static void Main(string[] args)
{ //数据源
int[] arr = {,,,,,,,,,}; //创建查询语句
var query = from a in arr
orderby a% descending,a ascending
select a;
//输出结果
foreach (var item in query)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
05-11 22:16