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();
分享到:
相关推荐
21. **User-Defined Functions**:创建和使用自定义函数以扩展 LINQ to SQL 的功能。 22. **DataContext**:`DataContext` 类是 LINQ to SQL 的核心,它封装了与数据库的会话,并负责对象的持久化。 23. **Dynamic...
通过创建这样一个基类,我们可以将数据库操作的逻辑封装起来,使代码更易于维护和扩展,并减少重复代码。 "Expression"在LINQ中的角色至关重要。它是.NET Framework中表达树类型的代表,用于表示代码的结构,而非...
以上内容涵盖了 LINQ to SQL 的基础使用,包括匿名类型、扩展方法、lambda 表达式以及 LINQ 查询的基本操作。在实际开发中,通过这些技术可以方便地操作数据库,执行查询、过滤、排序、分组等操作,大大提高了开发...
1. **获取唯一字段**:`Distinct()`方法可以去除重复项,如: ```csharp var makes = (from c in myCars select c.Make).Distinct(); ``` 2. **调用扩展函数**:可以直接在查询表达式中调用`Enumerable`类的扩展...
在实际使用中,通常需要将LINQ查询表达式括在括号内,并转换为`IEnumerable<T>`兼容的对象,以便调用这些扩展方法。例如: ```csharp static void GetCount(){ string[] currentVideoGames = {"Morrowind", ...
3. 查询操作:可以进行整表查询、部分字段查询、排序、分组、过滤重复记录等操作。例如,使用 from c in Student select c; 进行整表查询;使用 from c in Student where c.name == "张三" select c; 来查询特定条件...
例如,`System.Linq.Enumerable`中的`Where`和`Select`方法。 - 集合操作:工具类常提供对集合(如数组、列表)的操作,如查找、排序、过滤、分组等。 - 字符串处理:例如`System.Text.RegularExpressions`类库...
9.1.3 重复值绑定 9.2 数据源控件 9.3 SqlDataSource 9.3.1 选择记录 9.3.2 参数化命令 9.3.3 错误处理 9.3.4 更新记录 9.3.5 删除记录 9.3.6 插入记录 9.3.7 SqlDataSource的不足 9.4 ...
10. **扩展方法**:通过扩展方法为现有类型添加新功能,不改变原有类型。 11. **属性(Property)**:使用属性代替公共字段,提供访问控制和自动化的getter/setter。 12. **构造函数**:理解类的构造函数,包括...
9.1.3 重复值绑定 271 9.2 数据源控件 277 9.3 SqlDataSource 278 9.3.1 选择记录 279 9.3.2 参数化命令 281 9.3.3 错误处理 285 9.3.4 更新记录 286 9.3.5 删除记录 289 9.3.6 插入记录 289 ...
在Windows Forms应用程序中,ComboBox控件是常用的交互元素,它允许用户从一组预定义的选项中选择一个。...在实际开发中,可以根据项目需求对这个基础实现进行优化和扩展,比如添加错误处理、增加搜索历史记录等。