1.扩展类
/// <summary>
/// 根据字段过滤重复的数据
/// </summary>
/// <typeparam name="T"></typeparam>
public class Comparint<T> : IEqualityComparer<T> where T : class, new()
{
private string[] comparintFiledName = { };
public Comparint() { }
public Comparint(params string[] comparintFiledName)
{
this.comparintFiledName = comparintFiledName;
}
bool IEqualityComparer<T>.Equals(T x, T y)
{
if (x == null && y == null)
{
return false;
}
if (comparintFiledName.Length == 0)
{
return x.Equals(y);
}
bool result = true;
var typeX = x.GetType();//获取类型
var typeY = y.GetType();
foreach (var filedName in comparintFiledName)
{
var xPropertyInfo = (from p in typeX.GetProperties() where p.Name.Equals(filedName) select p).FirstOrDefault();
var yPropertyInfo = (from p in typeY.GetProperties() where p.Name.Equals(filedName) select p).FirstOrDefault();
result = result
&& xPropertyInfo != null && yPropertyInfo != null
&& xPropertyInfo.GetValue(x, null).ToString().Equals(yPropertyInfo.GetValue(y, null));
}
return result;
}
int IEqualityComparer<T>.GetHashCode(T obj)
{
return obj.ToString().GetHashCode();
}
}
2.使用
this.ddlCompanyName.AppendDataBoundItems = true;
this.ddlCompanyName.Items.Add(new ListItem("请选择", "-1"));
IList<HLS.PCS.Model.T_SalesOrg> lst = GetCompanyList();
this.ddlCompanyName.DataSource = lst.Distinct(new Comparint<HLS.PCS.Model.T_SalesOrg>("CompanyID")).ToList();
分享到:
相关推荐
Linq及扩展方法的使用 包含: 1.简单查询 2.First,Last,Skip,Take等 3.排序 4.join 5.聚合 6.其他
实现linq多个查询条件连接功能(支持linq to sql 和linq to entity)。 按多个指定属性排序功能。 不同参数的lamdba表达式条件间的转换功能。
Linq TO Sql 扩展方法,方便Linq TO Sql的深入学习,里面包含多个扩展文件
支持所有LINQ扩展方法和重载。 您可以轻松创建任何异步任务。 // Using Z.Linq public Task<IEnumerable>> MyAsyncMethod(CancellationToken cancellationToken) { List<Customer> customers = DB.GetCustomers()...
一组扩展和辅助方法,以补充System.Linq.Enumerable 。 其中一些方法只是常见Linq操作的快捷方式(例如Append , IsNullOrEmpty ),或者是对现有Linq方法的改进(例如,为FirstOrDefault指定默认值,为Max指定...
C# LINQ、委托和扩展方法的demo。
很简单的一个Linq扩展(增、删、改)实例,试用于初学者!
LINQ排除重复的list 免费下载
go-linq - 在Go中实现类似.NET的LINQ查询方法
12.1.2 自定义LINQ扩展能够实现什么 326 12.2 创建自定义查询操作符 327 12.2.1 改进标准查询操作符 327 12.2.2 辅助或领域相关的查询操作符 330 12.3 基本查询操作符的自定义实现 334 12.3.1 回顾查询...
C# LINQ两者方法示例
第二、三、四部分详细介绍了LINQ的主要功能LINQ to Objects、LINQ to SQL、LINQ to XML,第五部分研究了LINQ的可扩展性、在应用程序中使用各种LINQ功能的方法以及LINQ to DataSet。 本书适合于使用C#和VB.NET的软件...
#region 1.1 使用LINQ做查询 //集合最后一条记录和第一条记录 var list0 = masterList.First(); ... //扩展方法的写法 var list2 = masterList.Where(m => m.Level > 8 && m.Menpai == "丐帮");
扩展方法(Extension Methods)是C#3.0时引入的新特性,相信很多人都听过并且也都用过,最常见的是在LINQ中的使用。 不仅如此,在开发中,我们也可以创建自己扩展方法,使用它来优化类的设计、简化代码。本文将简单...
用js实现linq的操作,实现linq里面查询数据的方法
使用LINQ功能扩展python列表,实现干净,快速的编码
难得的学习LINQ的中文资料,很全很详细,包内包括两个文档: 一个是语言集成查询.pdf,内容简介如下: 1.LINQ 简介 简要介绍可编写的各种应用程序,以及使用 LINQ 查询可以解决的各种问题。 2.C# 中的 LINQ 入门 ...
LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习LINQ学习
Linq开发宝典 LInq入门宝典 Linq To Xml linq to sql
linq基础 linq to sql linq基础 linq to sql