Linq分组合并

有一个List,要求按日期分组,将同一天的数据组合起来,用Linq实现。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Student> students = new List<Student>()
            {
                new Student(){ ID = 1 , Name ="guwei1", BirthDay=DateTime.Now.AddHours(-11), Phone="123456781"},
                new Student(){ ID = 2 , Name ="guwei2", BirthDay=DateTime.Now.AddHours(2).AddDays(2), Phone="123456782"},
                new Student(){ ID = 3 , Name ="guwei3", BirthDay=DateTime.Now.AddHours(-13), Phone="123456783"},
                new Student(){ ID = 4 , Name ="guwei4", BirthDay=DateTime.Now.AddHours(4).AddDays(4), Phone="123456784"},
            };

            var result = from p in students
                         group p by p.BirthDay.ToString("yyyy-MM-dd") into g
                         let q = students.Where(x => x.BirthDay.ToString("yyyy-MM-dd") == g.Key)
                         select new
                         {
                             ID = q.Select(y => y.ID),
                             Name = q.Select(y => y.Name),
                             BirthDay = g.Key,
                             Phone = q.Select(y => y.Phone),
                         };

            foreach (var item in result)
            {
                Console.WriteLine("ID:{0} Name:{1} BirthDay:{2} Phone:{3}",
                    string.Join(",", item.ID),
                    string.Join(",", item.Name),
                    item.BirthDay,
                    string.Join(",", item.Phone));
            }
        }
    }

    public class Student
    {
        public int ID { get; set; }

        public string Name { get; set; }

        public DateTime BirthDay { get; set; }

        public string Phone { get; set; }
    }
}

可以看到,按照日期进行了分组,并将其它属性的数据项进行了合并显示。

时间: 2024-08-15 07:19:32

Linq分组合并的相关文章

分组合并,动态分列

1 IF OBJECT_ID('TEMPDB..#TEMP')>0 2 DROP TABLE #TEMP 3 GO 4 IF OBJECT_ID('TEMPDB..#TEMP2')>0 5 DROP TABLE #TEMP2 6 GO 7 8 --模拟数据 9 SELECT *INTO #TEMP FROM ( 10 SELECT 'A' col1,'B' col2,'C' col3,'1' X,'2'Y,'3'Z 11 UNION ALL 12 SELECT 'A' A,'B' B,'C'

Linq分组功能

Linq在集合操作上很方便,很多语法都借鉴自sql,但linq的分组却与sql有一定的区别,故整理发布如下. 1.  Linq分组 分组后以Key属性访问分组键值. 每一组为一个IEnumberAble或IQeuryAble的集合,可以继续枚举. Sample: string[] World = { "Hello","World"}; string[] Brother = { "Hello","Brother"}; var r

利用 groupby apply list 分组合并字符

利用 groupby apply list 分组合并字符 因为需要对数据进行分组和合并字符,找到了以下方法. 有点类似 SQL 的 Group BY. import pandas as pd import numpy as np data = pd.DataFrame({ 'id': [1, 2, 1, 2, 2, 2], 'value': ['A', 'B', 'C', 'D', 'E', 'G1'] }) print(data.groupby('id')['value'].apply(lis

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

自动分组+合并完整的sql脚本

BEGIN#前提:指定字符串长度为8字符定长#逻辑:循环8次,比对2个字符串相同索引位置下的数值大小,并取结果最大值.#示例:merge1(输入参数source1,输入参数source2,输出结果result)#注意:输入参数必须是8位字符串    set @cindex=1;    set result='';    WHILE @cindex<9 DO        set @temp1=SUBSTR(source1,@cindex,1)+0;        set @temp2=SUBST

PHP 按照多个键值给数组分组合并

简介: $array 为一堆数组,各数组键值为固定 $keys为分组依据,在$array中按照$keys所指定的键值将数组分组,并且将除$keys指定键值对应的值以外的值合并 1 function groupBy($array,$keys){ 2 $i = 0; 3 while($i < sizeof($array)){ 4 $x = sizeof($array) - 1; 5 while ($x > $i) { 6 //取数组交集并返回交集,保留键名 7 $temp = array_inte

LinQ中合并、连接、相交、与非查询

LinQ中Union合并查询:连接不同的集合,自动过滤相同项:延迟.即是将两个集合进行合并操作,过滤相同的项 var cities = (from p in mylinq.System_Places where p.PID == place select p).Union( from q in mylinq.System_Places where q.Parentid==place select q ); LinQ中的Concat连接查询:连接不同的集合,不会自动过滤相同项:延迟. (from 

SQL SERVER 实现分组合并实现列数据拼接

需求场景: SQL SERVER 中组织的数据结构是一个层级关系,现在需要抓出每个组织节点以上的全部组织信息,数据示例如下: ADOrg_ID--------------ParentID-----------------ShortName 001                                                                 顶级组织名称 001.021                     001                        

MYSQL 分组合并函数

MySQL中group_concat函数完整的语法如下:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa;+------+------+| id| name |+------+------+|1 | 10||1 | 20||1 | 20||2 | 20||3 | 200 ||3 | 500 |+------+------+6 rows in