LINQ 101——分组、Set、转换、Element

一、Grouping(分组)

例1:对于0-9数按被3整除的结果分组

代码:

 1 static void Linq1()
 2 {
 3     int[] numbers = { 5, 3, 2, 4, 0, 7, 8, 6, 9, 1 };
 4     var numModBy3 = from n in numbers
 5                     group n by n % 3
 6                         into g
 7                         select new { Remainder = g.Key, Numbers = g };
 8
 9     foreach (var g in numModBy3)
10     {
11         Console.Write("被3整除余 {0} : ", g.Remainder);
12         foreach (var num in g.Numbers)
13         {
14             Console.Write("{0} ", num);
15         }
16         Console.WriteLine();
17     }
18 }

例2:对单词按首字母分组

代码:

 1 static void Linq2()
 2 {
 3     string[] words = { "blueberry", "chimpanzee", "abacus", "banana", "apple", "cheese" };
 4     var groupedData = from w in words
 5                         group w by w[0]
 6                             into g
 7                             orderby g.Key // 加排序
 8                             select new { FirstChar = g.Key, Words = g };
 9     foreach (var g in groupedData)
10     {
11         Console.Write("以 {0} 字母开头的有 : ", g.FirstChar);
12         foreach (var word in g.Words)
13         {
14             Console.Write("{0} ", word);
15         }
16         Console.WriteLine();
17     }
18 }

二、Set(集合)

Distinct去重

source.Distinct();

其他 Union、Intersect、Except 参见 LINQ 101 Sample

三、Conversion(转换)

ToList
ToDictionary

四、Element(元素操作)

First
FirstOrDefault

时间: 2024-10-14 03:57:05

LINQ 101——分组、Set、转换、Element的相关文章

LINQ 101——约束、投影、排序

什么是LINQ:LINQ 是一组 .NET Framework 扩展模块集合,内含语言集成查询.集合以及转换操作.它使用查询的本机语言语法来扩展 C# 和 Visual Basic,并提供利用这些功能的类库. 什么是LINQ 101:是学习LINQ的不错的资源(下载地址:http://pan.baidu.com/s/1ntE74NJ),当初我也是看LINQ101来熟悉LINQ的.现把我当时的学习笔记整理出来 Restriction (约束)Projection (投影)Ordering (排序)

linq中分组查询而且获取每个分组中的第一条记录,数据用于分页绑定

LINQ分组取出第一条数据 Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: Id=2, Name="Test2" 以上list如果直接使用distinct方法进行过滤,仍然返回3条数据,而需要的结果是2条数据.下面给出解这个问题的方法: 方法1: Distinct 方法中使用的相等比较器.这个比较器需要重写Equals和GetHashCode方法,个人不推荐,感觉较

LINQ 101——分区、Join、聚合

1.Partitioning 分区 Take 例1:取前3个数 1 static void Linq1() 2 { 3 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; 4 var first3Numbers = numbers.Take(3); 5 Console.WriteLine("前3个数:"); 6 foreach (var n in first3Numbers) 7 { 8 Console.WriteLine(n); 9 }

LINQ查询表达式(3) - LINQ 查询分组

对查询结果进行分组 分组是 LINQ 最强大的功能之一. 下面的示例演示如何以各种方式对数据进行分组: 按照单个属性. 按照字符串属性的首字母. 按照计算出的数值范围. 按照布尔谓词或其他表达式. 按照复合键. 此外,最后两个查询将它们的结果投影到一个新的匿名类型中,该类型仅包含学生的名字和姓氏. //单个属性作为组键对源元素进行分组 var queryLastNames = from student in students group student by student.LastName i

Linq分组,linq方法分组

Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: view sourceprint? 01.public class StudentScore 02.{ 03.public int ID { set; get; } 04.public string Name { set; get; } 05.public string Course { set; get; } 06.publi

LINQ SQL分组取最近一条记录

最近项目有一个需求,从订单表查询出每个客户最近一条订单记录.数据库表结构如下图 SELECT * FROM ( select ROW_NUMBER()over(partition by [custid] order by [orderdate] desc) AS newIndex,* from Sales.Orders ) as T where T.newIndex=1 执行结果,已经按照客户分组,并且按时间顺序生成序号. 对应LINQ代码为 var table = contex.GetTabl

C# linq lambda 分组获取最新的数据

1.linq 写的不是很好总结一下 ①.数据 var id = Guid.Parse("04245059-9251-44e1-4c16-08d6be4a0add"); Guid id2 = Guid.Parse("12385059-9251-44e1-4c16-08d6be4a0add"); var time = DateTime.Now; var time2 = time.AddHours(5); List<list_data> list = new

LINQ、Lambda 的转换

var d = from d1 in pDT1.AsEnumerable() from d2 in pDT2.AsEnumerable() where d1.Field<string>("ID") == d2.Field<string>("ID") select new { a = d1.Field<string>("ID"), v = d1.Field<double>("VALUE&qu

linq 日期分组统计

#region        string Condition(DateTime date, string type)        {            if (date == null)            {                date = DateTime.MinValue;            } if (type == "day")            {                return date.ToString("yyyy-M