主表:

public partial class Activity
{
[Key]
public int pkActivity { get; set; }
public int fkEmployee { get; set; }
public string ActivityName { get; set; }
public DateTime RegistrationStartDateTime { get; set; }
public DateTime RegistrationEndDateTime { get; set; }
public DateTime StartDateTime { get; set; }
public DateTime EndDateTime { get; set; }
public int MaxNumOfPeople { get; set; }
public decimal PricePerPeople { get; set; }
public string ActivityLocation { get; set; }
public string ActivityStatus { get; set; }
public string Description { get; set; }
public string ImgUrl { get; set; }
public DateTime CreateOn { get; set; }
public string CreateBy { get; set; }
public DateTime LastModifyOn { get; set; }
public string LastModifyBy { get; set; }
}

重表:

public partial class ActivityEmployee
{
[Key]
public int pkActivityEmployee { get; set; }
public int fkActivity { get; set; }
public int fkEmployee { get; set; }
public string Comments { get; set; }
public DateTime CreateOn { get; set; }
public string CreateBy { get; set; }
}

获取当前活动注册人数linq 写法,用DefaultIfEmpty 表示left join,通过group by new 进行分组,并通过groupedTable.Key.属性 提取数据:

/// <summary>
/// 获取我创建的活动列表。
/// </summary>
/// <param name="employeeKey"></param>
/// <returns></returns>
public IEnumerable<ActivityDTO> GetMyCreatedActivitiesList(int employeeKey)
{
var query = from activity in clientDbContext.Activity
join activityEmployee in clientDbContext.ActivityEmployee
on activity.pkActivity equals activityEmployee.fkActivity into temp
from t in temp.DefaultIfEmpty()
where activity.fkEmployee == employeeKey
group t by new
{
activity.pkActivity,
activity.fkEmployee,
activity.ActivityName,
activity.RegistrationStartDateTime,
activity.RegistrationEndDateTime,
activity.StartDateTime,
activity.EndDateTime,
activity.ImgUrl,
activity.ActivityStatus,
activity.ActivityLocation,
activity.Description,
activity.CreateOn,
activity.CreateBy,
activity.LastModifyBy,
activity.LastModifyOn
}
into groupActivity
select new ActivityDTO()
{
Id = groupActivity.Key.pkActivity,
CreatedEmployeKey = groupActivity.Key.fkEmployee,
ActivityName = groupActivity.Key.ActivityName,
RegistrationStartDateTime = groupActivity.Key.RegistrationStartDateTime,
RegistrationEndDateTime = groupActivity.Key.RegistrationEndDateTime,
StartDateTime = groupActivity.Key.StartDateTime,
EndDateTime = groupActivity.Key.EndDateTime,
ActivityImageUrl = groupActivity.Key.ImgUrl,
ActivityStatus = groupActivity.Key.ActivityStatus,
ActivityLocation = groupActivity.Key.ActivityLocation,
Description = groupActivity.Key.Description,
CreateOn = groupActivity.Key.CreateOn,
CreateBy = groupActivity.Key.CreateBy,
LastModifyBy = groupActivity.Key.LastModifyBy,
LastModifyOn = groupActivity.Key.LastModifyOn,
RegisteredCount = groupActivity.Count(g=>g.fkActivity!=null)//报名人数,left join存在null数据
}; return query;
}

Linq Group by获取数量和数据的更多相关文章

  1. 用LINQ获取XML节点数据

    Insus.NET想对<从字符串中获取XML节点数据> http://www.cnblogs.com/insus/p/3299052.html 这篇改写为使用LINQ的方法实现.LINQ中 ...

  2. WindowsPhone 在 根据公历 获取月球日期数据

    WindowsPhone 在 根据公历 获取月球日期数据 WindowsPhone 在 它们的定义 类,根据公历 获取月球日期数据 using System; using System.Collect ...

  3. 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

    原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...

  4. 以多进程读取oss符合条件的数据为例,综合使用多进程间的通信、获取多进程的数据

    import datetime import sys import oss2 from itertools import islice import pandas as pd import re im ...

  5. C#使用Linq to csv读取.csv文件数据

    前言:今日遇到了一个需要读取CSV文件类型的EXCEL文档数据的问题,原本使用NPOI的解决方案直接读取文档数据,最后失败了,主要是文件的类型版本等信息不兼容导致.其他同事有使用linq to csv ...

  6. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  7. 读取TDrawGrid之获取博易数据

    朋友叫我帮忙写个从博易读取数据的工具,可无奈数据所在控件并不是Windows标准控件,也就是说没办法通过发送系统消息来获取 相关数据,于是乎试了一下从内存直接读取,可最后并不能达到预期目的,原因是笔者 ...

  8. C#中,使用正式表达式匹配获取所需数据

    .NET中,使用正式表达式匹配获取所需数据 需求:获取一串字符串中,正则匹配出需要的数据. 例如以下字符串: string temp ="ErrorCode:-1,Message:{&quo ...

  9. 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换

    [源码下载] 速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 作者:webabcd 介绍速战速决 之 PHP ...

随机推荐

  1. JavaScript函数、对象和数组

    一.JavaScript函数 1.定义函数:函数的通用语法如下 function function_name([parameter [, ...]]) { statements; } 由关键字func ...

  2. 【Unity|C#】基础篇(6)——const、readonly、static readonly

    [学习资料] <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.c ...

  3. C++-POJ2777-Count Color[线段树][lazy标记][区间修改]

     分析:https://www.bilibili.com/read/cv4777102 #include <cstdio> #include <algorithm> using ...

  4. js基础之--变量 作用域和内存问题

    基本类型:Undefind Null Boolean Number String 引用类型: 对象 在操作对象时,实际上实在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的. 从一个变 ...

  5. EF database first

    https://www.cnblogs.com/net064/p/8024150.html 1.EF简介ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对 ...

  6. AcWing 842. 排列数字

    深搜的一道水题 https://www.acwing.com/problem/content/844/   正确输入输出 #include<bits/stdc++.h> using nam ...

  7. OPGL+VS2017+GLFW+GLEW配置详细步骤

    OPGL+VS2017+GLFW+GLEW配置详细步骤: https://blog.csdn.net/weixin_40921421/article/details/80211813 原博客地址:ht ...

  8. [转]Vue 2.0——渐进式前端解决方案

    前言:框架是什么?为什么要有框架?在众多的框架之中,Vue 独具魅力之处在哪里呢?其背后的核心思想是什么?Vue 究竟火到什么程度?最近发布的 Vue2.0 又做了哪些改进呢?Vue 和 Weex 又 ...

  9. HTML学习(1)简介

    HTML---HyperText Markup Language,超文本标记语言,是一种用于创建网页的标准标记语言. 注意:对于中文网页需要使用 <meta charset="utf- ...

  10. Java开发之Redis

    简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品均有以下特点: Redis 支持数据持久化 ...