将不确定变为确定~Linq-Distinct()方法是否可以对复杂结果集进行去重?
2012-09-25 11:02
302 查看
回到目录
linq中也有像T—SQL的distinct方法,可以将重复的结果集去重,以下是我们使用 distinct()时需要注意的地方:
1 distinct去重记录要求每个字段都重复时,才算重复对象,这与T—SQL保持一至
2 disinct语句与orderby语句可以放在一起使用,对彼此不产生影响
3 distinct是在数据库端进行的操作,即,你在linq中的distinct与T-SQL的distinct效果一样,不会产生性能问题
4 distinct的数据集中不能有复杂对象,如果出现List<T>这种引用类型,那LINQ在解释成T—SQL时,将会把distinct()去掉,从而使去重操作失效
实例:
由于在结果集中出现List<T>这种复杂类型,所以distinct()操作失效,如图:
如果在结果集中没有复杂类型Res_ItemPrice属性,那distinct()语句会生效
结果是正确的:
回到目录
linq中也有像T—SQL的distinct方法,可以将重复的结果集去重,以下是我们使用 distinct()时需要注意的地方:
1 distinct去重记录要求每个字段都重复时,才算重复对象,这与T—SQL保持一至
2 disinct语句与orderby语句可以放在一起使用,对彼此不产生影响
3 distinct是在数据库端进行的操作,即,你在linq中的distinct与T-SQL的distinct效果一样,不会产生性能问题
4 distinct的数据集中不能有复杂对象,如果出现List<T>这种引用类型,那LINQ在解释成T—SQL时,将会把distinct()去掉,从而使去重操作失效
实例:
DataClasses1DataContext db = new DataClasses1DataContext(); var linq = from _data in db.Res_Item join data2 in db.Res_ItemCategory on _data.ID equals data2.ItemID join data3 in db.Res_ItemPrice on _data.ID equals data3.ItemID into list select new Res_Item_Ext { ID = _data.ID, //列说明: 产品编号 Name = _data.Name, //列说明: 商品名称 Res_ItemPrice=list.ToList(), }; var linq2 = linq.Where(i => i.ID == 5104).OrderBy(i => i.ID).Distinct().ToList(); linq2.ForEach(i => Console.WriteLine(i.ID + i.Name));
由于在结果集中出现List<T>这种复杂类型,所以distinct()操作失效,如图:
如果在结果集中没有复杂类型Res_ItemPrice属性,那distinct()语句会生效
结果是正确的:
回到目录
相关文章推荐
- 将不确定变为确定~Linq的Group是否可以根据多个字段进行分组
- 将不确定变为确定~SQLSERVER是否可以进行位运算?
- 将不确定变为确定~Razor视图中是否可以嵌套JS代码
- 将不确定变为确定~表达式树是否可以有个集合,条件过滤有了新方向续(新增了OR和AND查询)
- 将不确定变为确定~表达式树是否可以有个集合,条件过滤有了新方向
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- 将不确定变为确定~头压缩是否有必要,MVC如何实现头压缩
- 将不确定变为确定~LINQ查询包含对不同数据上下文上所定义项的引用
- 将不确定变为确定~static被翻译成静态,你是否赞同
- 使用Linq中的Distinct方法对序列进行去重操作
- 将不确定变成确定~LINQ DBML模型可以对应多个数据库吗
- 将不确定变为确定系列~Linq的批量操作靠的住吗?
- 将不确定变为确定~程序是否真的Dispose了
- 如何使用Linq或EF来对数据去重——Distinct方法详解
- 将不确定变为确定~Linq to SQL不能随机排序吗?
- 扩展Linq的Distinct方法动态根据条件进行筛选