Linq的Distinct和T-Sql的distinct一样,可以将重复的结果集去重
注意:

1 distinct去重记录要求每个字段都重复时,才算重复对象,这与sql一样
2 distinct语句可以和order by语句放在一起使用,对彼此不产生影响
3 distinct的数据集中不能有复杂对象,如果出现List<T>这种引用类型,那linq解释成T-Sql时候,会把distinct去掉,也就是失去去重的作用

例子
DataClasses1DataContext db = new DataClasses1DataContext();
2 var linq = from _data in db.Res_Item
3 join data2 in db.Res_ItemCategory on _data.ID equals data2.ItemID
4 join data3 in db.Res_ItemPrice on _data.ID equals data3.ItemID into list
5 select new Res_Item_Ext
6 {
7 ID = _data.ID, //列说明: 产品编号
8 Name = _data.Name, //列说明: 商品名称
9 Res_ItemPrice=list.ToList(),
10 };
11 var linq2 = linq.Where(i => i.ID == 5104).OrderBy(i => i.ID).Distinct().ToList();
12 linq2.ForEach(i => Console.WriteLine(i.ID + i.Name));

 

由于在结果集中出现List<T>这种复杂类型,所以distinct()操作失效,如图:

Linq 中的distinct去重

 

如果在结果集中没有复杂类型Res_ItemPrice属性,那distinct()语句会生效

Linq 中的distinct去重

结果是正确的:

Linq 中的distinct去重

相关文章:

  • 2021-12-10
  • 2021-09-23
  • 2021-10-11
  • 2021-08-26
  • 2021-09-02
  • 2021-08-04
  • 2022-12-23
  • 2021-12-28
猜你喜欢
  • 2022-02-14
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案