C# Distinct使用,支持对象的相等比较
官网Enumerable.Distinct
https://msdn.microsoft.com/zh-cn/library/bb338049.aspx
CSDN中作者oriency755
关于Distinct的使用:
http://blog.csdn.net/oriency755/article/details/13773557
使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Transactions; namespace Activity
{
public class ActivitySceneService
{
public List<DrawPlay> GetDraw(int activitySceneID)
{
using (var dbContext = new DbContext())
{
var merchant = dbContext.Find<Merchant>();
var playList = new List<DrawPlay>();
playList = dbContext.Draw001Plays.Where(u => u.ActivitySceneID == activitySceneID).Distinct(
new Compare<DrawPlay>((x, y) => (x != null && y != null && x.UserID == y.UserID))).ToList();//放置比较器
return playlist;
}
}
} public delegate bool CompareDelegate<T>(T x, T y);
public class Compare<T> : IEqualityComparer<T>
{
private CompareDelegate<T> _compare;
public Compare(CompareDelegate<T> d)
{
this._compare = d;
} public bool Equals(T x, T y)
{
if (_compare != null)
{
return this._compare(x, y);
}
else
{
return false;
}
} public int GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
}
}
Test
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data; namespace NAMESPACE
{
public class CLASSNAME
{
public void Test()
{
using (var dbContext = new DbContext())
{
dbContext.DATABASE.Distinct(
new Compare<MODELTYPE>((x, y) => (x != null && y != null && x.FIELD> VALUE && y.FIELD> VALUE))).ToList();
}
}
} //使用委托
public delegate bool CompareDelegate<T>(T x, T y);
public class Compare<T> : IEqualityComparer<T>
{
private CompareDelegate<T> _compare;
public Compare(CompareDelegate<T> d)
{
this._compare = d;
} public bool Equals(T x, T y)
{
if (_compare != null)
{
return this._compare(x, y);
}
else
{
return false;
}
} public int GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
}
}
和上一个差不多
Distinct项目内使用 using Qxun.Framework.Utility var onlineRecords = dbContext.OnLineRecords.ToList().Distinct(new CompareExtend<OnLineRecord>((x, y) => x != null && y != null && x.MerchantID == y.MerchantID && x.ActivitySceneID == y.ActivitySceneID)); ****************************************CompareExtend类******************************************************** using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Qxun.Framework.Utility
{
public delegate bool CompareDelegate<T>(T x, T y);
public class CompareExtend<T> : IEqualityComparer<T>
{
private CompareDelegate<T> _compare;
public CompareExtend(CompareDelegate<T> d)
{
this._compare = d;
} public bool Equals(T x, T y)
{
if (_compare != null)
{
return this._compare(x, y);
}
else
{
return false;
}
} public int GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
}
}
distinct 项目中使用
C# Distinct使用,支持对象的相等比较的更多相关文章
- Spring cloud Feign不支持对象传参解决办法[完美解决]
spring cloud 使用 Feign 进行服务调用时,不支持对象参数. 通常解决方法是,要么把对象每一个参数平行展开,并使用 @RequestParam 标识出每一个参数,要么用 @Reques ...
- SQL Server 新建 数据库关系图 时弹出警告提示此数据库没有有效所有者,因此无法安装数据库关系图支持对象。
今天创建数据库关系图,发现提示此数据库没有有效所有者,因此无法安装数据库关系图支持对象.若要继续,请首先使用 数据库属性 对话框的文件页或 ALTER AUTHORIZAITION 语句将数据库所有者 ...
- springmvc 支持对象与json 自动转换的配置
基于maven的工程, 需要在pom.xml中添加如下依赖 <dependency> <groupId>javax.servlet</groupId> <ar ...
- 1.部分(苹果)移动端的cookie不支持中文字符,2.从json字符串变为json对象时,只支持对象数组
1.移动端的cookie不支持中文字符.可以用编码,解码的方式解决. 2.json字符串变成相应 的,json对象数组字符串.就这样 3.不同客户端(移动端.电脑)的请求,在C#服务端的取时间的格式竟 ...
- webpack-dev-server 多入口自动刷新,支持对象
万物的来源~webpack 本身 watch webpack watch 传送门 webpack 可以监听文件变化,当它们修改后会重新编译 watch boolean 启用 Watch 模式.这意味着 ...
- distinct 数组去重,对象去重
distinct 操作符可以用来去重,将上游重复的数据过滤掉. import { of } from 'rxjs'; import { distinct} from 'rxjs/operators'; ...
- javascript SDK开发之webpack打包支持对象展开运算符...
场景:使用了对象的展开运算符,webpack打包报错,错误如下:Parsing error: Unexpected token - 1.安装依赖 npm install babel-preset-st ...
- 让jquery easyui datagrid列支持绑定嵌套对象
嵌套对象是指返回的json数据,是对象的某个属性自带有属性.而我们恰恰又需要这个属性,默认情况下easyui的datagrid是不支持绑定嵌套对象的.比如:datagrid的field属性只能为fie ...
- 阿里云对象存储OSS支持版本管理特性
阿里云对象存储OSS现已经全面支持“对象版本管理”特性.该功能适用于所有的存储类型以及区域.当Bucket启用该特性后,“对象版本管理”功能可以保护和恢复误删除.误覆盖的数据. 对象存储OSS“版本管 ...
随机推荐
- tcp与http的区别
1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. ...
- 在CMD下启动vmware、Xshell连接虚拟机以及控制Chrome浏览器自动执行js登录校园网
标题有点长,主要是写个bat出来玩玩, (1)不用每次都手动关闭mysql服务(我不想把它设为手动启动,有强迫症) (2)然后希望每次vmware能自动连上虚拟机 (3)以及每次Xshell都能自动启 ...
- Eclipse里安装插件
1.在eclipse中选择 help->install new software. 2.在work with 框中输入:Indigo - http://download.eclipse.org/ ...
- 路由表及route使用
路由表 linux下通过route可以查看本地路由表: Kernel IP routing table Destination Gateway Genmask ...
- yarn是什么?为什么会产生yarn,它解决了什么问题?以及yarn的执行流程
yarn是什么?为什么会产生yarn,它解决了什么问题? 答:yarn是作业调度和集群资源管理的一个框架. 首先对之前的Hadoop 和 MRv1 简单介绍如下: Hadoop 集群可从单一节点 ...
- github搭建个人博客----------绑定域名访问
首先你得有一个Github账号,没有的话去github.com注册一个账号,然后到达仓库信息填写界面: 创建仓库,如下图:(仓库名要以自己的github名作为前缀,后面的夹 .github.io) 后 ...
- StarRTC , AndroidThings , 树莓派小车,公网环境,视频遥控(三)手机端
原文地址:http://blog.starrtc.com/?p=111 这篇来介绍一下整个项目的手机端部分.在上一篇里我们已经将sdk导入到项目中了,下边直接用即可. 1 登录StarRTC的服务跟小 ...
- 完美解决方案:wordpress后台进不去,用户名、密码输入了登陆没有反应(有更新)
http://mingming4745.blog.163.com/blog/static/173845720119159425890/?suggestedreading ——————————————— ...
- 'cl.exe' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
1.首先找到vcvars32.bat文件,一般在C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin文件夹下 2.打开cmd黑窗 ...
- BCM_GPIO驱动测试
在写内核驱动的时候,最好先在uboot上,进行裸板测试,验证寄存器,再移植到内核中,这样可以熟悉寄存器,也排除内核中的一些干扰. /********************************** ...