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“版本管 ...
随机推荐
- java web hello world(一)
首先在eclipse 里面创建一个java 动态项目, 记住路径,这里是直接通过根目录直接访问的webContent目录下面 的文件, 创建好后 ,在本地配置Tomcat服务器, 将server加入到 ...
- Android开发系列(十七):读取assets文件夹下的数据库文件
在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...
- 简易web项目jdbcUtil
jdbc.username=root jdbc.password=root jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://mini1: ...
- Hadoop计算中的Shuffle过程(转)
Hadoop计算中的Shuffle过程 作者:左坚 来源:清华万博 时间:2013-07-02 15:04:44.0 Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解Ma ...
- kafka操作清单
1. 查看topic个数 ./kafka-topics.,dwtest-data3:,dwtest-data4: 2. 查看topic的生产者与消费者消息 ./kafka-topics.,dwtest ...
- java多线程面试题整理及回答
1)现在有T1.T2.T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉.这个多线程问题比 ...
- Quill + Framework 7 移动端无法获取焦点
Quill 是一个轻量级的富文本编辑器.最近公司项目中需要用到这个东东.使用方法可以直接查看它的官网地址或者Github地址: Github地址:quilljs 官网地址:quill官网 主要说一下用 ...
- jqueryEasyui常用代码
//查询: function doSearch(form){ var fields =$('#queryForm').serializeArray(); var $fm = $(form); var ...
- 基于Dedup的数据打包技术
基于Dedup的数据打包技术 0.引言 Tar, winrar, winzip是最为常见的数据打包工具软件,它们把文件集体封装成一个单独的数据包,从而方便数据的分布.传输.归档以及持久保存等目的 ...
- 关于win7下安卓开发环境的搭建
一.下载安装JDK(不用配置环境变量) 1.先卸载原来存在的JDK 控制面板-卸载程序-有两个软件(Java SE Development Kit 8 Update 101(64-bit)和Java ...