如何使用Linq或EF来对数据去重——Distinct方法详解
刚开始接触LINQ时使用distinct去重时和大家一样遇到了一些麻烦,很感谢 http://www.cnblogs.com/A_ming/archive/2013/05/24/3097062.html 提供的一些方法。
后来经过深入学习,了解了一些更为简洁的方法,在这里与大家一同分享。

如上图在WebConfig表中含有以下三个字段Name,Linkhref和Type,现在我们要对Type去重获取所有类型。
第一种使用Distinct方法:
ViewBag.Dist = db.WebConfig.Select(p => p.Type).Distinct().ToList();
使用这种方法筛选出来的是一个string集合
前台展示:
<ul>
@foreach (string dist in ViewBag.Dist)
{
<li>@dist</li>
}
</ul>
第二种使用DistinctBy方法:
ViewBag.Dist1 = db.WebConfig.DistinctBy(p => p.Type).ToList();
使用这种方法筛选出来的是一个Model类型(WebConfig)
前台展示:
<ul>
@foreach (WebConfig dist1 in ViewBag.Dist1)
{
<li>@dist1.Type</li>
}
</ul>
第三种使用GroupBy方法:
ViewBag.Dist2 = db.WebConfig.GroupBy(p => p.Type).Select(p=>p.Key).ToList();
使用这种方法筛选出来的是一个键值对(<string,WebConfig>)
前台展示:
<ul>
@foreach (string dist2 in ViewBag.Dist2)
{
<li>@dist2</li>
}
</ul>
todictionary:
var m = db.D_Annotation.Where(p => p.DocumentID == id).GroupBy(p => p.ProofreadType).Select(p => new
{
p.Key,
CompletedCount = p.Sum(a => a.IsCompleted),
TotalCount = p.Count()
})
.ToDictionary(p => p.Key,
p =>
new Dictionary<string, object>
{
{"CompletedCount", p.CompletedCount},
{"TotalCount", p.TotalCount}
});
如何使用Linq或EF来对数据去重——Distinct方法详解的更多相关文章
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...
- [转帖]IP /TCP协议及握手过程和数据包格式中级详解
IP /TCP协议及握手过程和数据包格式中级详解 https://www.toutiao.com/a6665292902458982926/ 写的挺好的 其实 一直没闹明白 网络好 广播地址 还有 网 ...
- 转:WCF传送二进制流数据基本实现步骤详解
来自:http://developer.51cto.com/art/201002/185444.htm WCF传送二进制流数据基本实现步骤详解 2010-02-26 16:10 佚名 CSDN W ...
- PHP外部调用网站百度统计数据的方法详解
目的:外部调用网站的百度统计(tongji.baidu.com)数据. 条件:1.具备调用目标网站的百度统计平台管理权限 2.PHP环境支持curl函数. 原理:同PHP小偷程序原理,通过curl函数 ...
- Oracle10g数据泵impdp参数详解--摘自网络
Oracle10g数据泵impdp参数详解 2011-6-30 12:29:05 导入命令Impdp • ATTACH 连接到现有作业, 例如 ATTACH [=作业名]. • C ...
- Java构造和解析Json数据的两种方法详解二——org.json
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- python数据分析数据标准化及离散化详解
python数据分析数据标准化及离散化详解 本文为大家分享了python数据分析数据标准化及离散化的具体内容,供大家参考,具体内容如下 标准化 1.离差标准化 是对原始数据的线性变换,使结果映射到[0 ...
随机推荐
- UVA 1546 - Complete the sequence!(差分法)
UVA 1546 - Complete the sequence! 题目链接 题意:给定多项式前s项,求出后c项,要求尽量小 思路:利用差分法,对原序列求s - 1次差分,就能够发现规律,然后对于每多 ...
- Mean Shift简介
Mean Shift,我们 翻译“平均漂移”. 其集群,图像平滑. 图像分割和跟踪已广泛应用.因为我现在认为追踪,因此推出Mean Shift该方法用于目标跟踪.从而MeanShift較全面的介绍. ...
- Directx11学习笔记【十一】 画一个简单的三角形--effect框架的使用
这里不再介绍effect框架的具体使用,有关effect框架使用可参考http://www.cnblogs.com/zhangbaochong/p/5475961.html 实现的功能依然是画一个简单 ...
- .NET MVC学习笔记(一)
看了些关于MVC的资料,做一些MVC的笔记. 分解关注点 在MVC世界里有个很重要的观念--"分解关注点"(Separation of Concerns),指的是:当你进行软件开发 ...
- SSL探03
本文探讨了Openssl的Engine机械.Openssl硬件引擎(Engine)可以使用户比較easy地将自己的硬件增加到openssl中去,替换其提供的软件算法. ENGINE 是 OPENSSL ...
- onethink和phpwind共享
将onethink和phpwind数据库安装在一起.使用公用表前缀. 将onethink的member表点phpwind有user表 这是onethink在根文件夹的安装,phpwind安装在bbs的 ...
- Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)
一.引言 本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于Intelli ...
- 使用eclips发展java当闪回的问题
近期開始android的开发学习.当然要先从java入手了.我选择eclips作为开发的IDE,在測试java代码例子时,假设我的代码是能够出现系统自己主动代码补齐时eclips就会立马闪退. 刚開始 ...
- 用Unicode迎接未来
项目中使用了emoji,然后,问题产生了,后端MySQL数据库无法存储emoji字符,悲了个剧. emoji是Unicode字符集的子集,Unicode的使用应该非常普遍了,怎么会 ...
- Docker安装应用程序(Centos6.5_x64)
Docker安装应用程序(Centos6.5_x64) Authoer::jom_ch@2014/7/23 Docker官方网站 http://www.docker.com/ 一,安装EPEL 关于E ...