日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Linq distinct去重方法之一

發(fā)布時(shí)間:2024/4/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linq distinct去重方法之一 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
var?result?=?query.Distinct().ToList(); List<DeliveryOrderViewModel> dov?=?result.GroupBy( p?=>?new?{p.SAP_DeliveryOrderID}).Select( g?=>?g.First()).ToList(); return?dov;一、使用Distinct()擴(kuò)展方法去重
?
實(shí)例:根據(jù)Id去重
錯(cuò)誤的方式
?


? ? List<Product> products = new List<Product>()
? ? {
? ? ? ? new Product(){ Id="1", Name="n1"},
? ? ? ? new Product(){ Id="1", Name="n2"},
? ? ? ? new Product(){ Id="2", Name="n1"},
? ? ? ? new Product(){ Id="2", Name="n2"},
? ? };


? ? var distinctProduct = products.Distinct();


返回4條數(shù)據(jù),因?yàn)镈istinct 默認(rèn)比較的是Product對(duì)象的引用
?
正確的方式
新建類ProductIdComparer,繼承 IEqualityComparer<Product>,實(shí)現(xiàn)Equals方法
?
?
C# 代碼? ?復(fù)制


public class ProductIdComparer : IEqualityComparer<Product>
{
? ? public bool Equals(Product x, Product y)
? ? {
? ? ? ? if (x == null)
? ? ? ? ? ? return y == null;
? ? ? ? return x.Id == y.Id;
? ? }


? ? public int GetHashCode(Product obj)
? ? {
? ? ? ? if (obj == null)
? ? ? ? ? ? return 0;
? ? ? ? return obj.Id.GetHashCode();
? ? }
}
?
使用的時(shí)候,只需要


var distinctProduct = allProduct.Distinct(new ProductIdComparer());
?
備注:現(xiàn)在假設(shè)我們要 按照 Name來篩選重復(fù)呢?則需要再添加一個(gè)類ProductNameComparer.
?
二、使用GroupBy方式去重
對(duì)需要Distinct的字段進(jìn)行分組,取組內(nèi)的第一條記錄這樣結(jié)果就是Distinct的數(shù)據(jù)了。
例如
?




List<Product> distinctProduct = allProduct


? .GroupBy(p => new {p.Id, p.Name} )


? .Select(g => g.First())


? .ToList();


?
三、通過自定義擴(kuò)展方法DistinctBy實(shí)現(xiàn)去重
?
?
C# 代碼? ?復(fù)制




public static IEnumerable<TSource> DistinctBy<TSource, TKey> (this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)


{


? ? HashSet<TKey> seenKeys = new HashSet<TKey>();


? ? foreach (TSource element in source)


? ? {


? ? ? ? if (seenKeys.Add(keySelector(element)))


? ? ? ? {


? ? ? ? ? ? yield return element;


? ? ? ? }


? ? }


}


方法的使用
1、針對(duì)ID,和Name進(jìn)行Distinct
var query = allProduct.DistinctBy(p => new { p.Id, p.Name });
2、僅僅針對(duì)ID進(jìn)行distinct:
var query = allProduct.DistinctBy(p => p.Id);

轉(zhuǎn)載于:https://www.cnblogs.com/jhxk/articles/9789336.html

總結(jié)

以上是生活随笔為你收集整理的Linq distinct去重方法之一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品扒开腿做爽爽爽男男 | 97xxx| 牛牛免费视频 | 欧美h网站| 国产乱码久久久 | 九九免费视频 | 国产精品一区在线看 | av手机天堂网 | 成年网站免费观看 | 久久色中文字幕 | 久久久久无码精品国产 | 天天干人人 | 日韩免费片 | 国产一级大片 | 久久日本精品字幕区二区 | 污污内射久久一区二区欧美日韩 | 成人综合av | 欧美日韩国产激情 | 另类男人与善交video | 中文字幕亚洲一区二区三区五十路 | 成年丰满熟妇午夜免费视频 | 亚洲作爱 | 欧洲精品一区二区三区久久 | 色婷婷九月 | 老女人做爰全过程免费的视频 | 日本少妇高潮 | 色婷婷综合久久久久中文 | 日韩欧美亚洲一区 | 国产日韩欧美一区 | 亚洲一区二区免费电影 | 在线视频你懂得 | 欧美三级黄色大片 | 91夫妻在线 | 涩涩亚洲| 一二区视频 | 天天爽天天 | jizz成人| 国产xxxx做受视频 | 亚洲人掀裙打屁股网站 | 国产美女作爱视频 | 国产精品色婷婷 | 在线观看av网站 | 欧美黑人多人双交 | 蜜桃av影院 | 窝窝视频在线观看 | 日韩欧美一区二区三区四区五区 | 欧日韩不卡视频 | 亚洲国产精品无码久久 | 性做久久久久久免费观看 | 中文字幕亚洲一区二区三区五十路 | 欧美夫妻性生活视频 | 黑人极品videos精品欧美裸 | 男人的天堂视频 | 黄色a视频 | 日韩精品一区二区三区在线播放 | 91视频青青草 | 丝袜性爱视频 | 4388成人网 | xxxxxx黄色| 国产精品无码久久久久成人app | 欧美日韩片 | 久久成人免费网站 | 日本作爱视频 | 国产精品综合久久久久久 | 精品国产一区二区三区久久久 | 催眠美妇肉奴系统 | 成人v精品蜜桃久一区 | 91精品视频在线 | 欧美黄色性 | 日本女人hd | kk视频在线观看 | 黄色一级小视频 | 日韩有码一区二区三区 | 春宵av| 播播网色播播 | 人妻无码中文字幕免费视频蜜桃 | aaa人片在线 | 成人久久影院 | 亚洲精品www. | 精品国产无码在线 | 人人爽久久涩噜噜噜网站 | 特种兵之深入敌后高清全集免费观看 | 理论片午夜 | 三级欧美视频 | 在线国产视频一区 | 国产亚洲欧美在线精品 | 国产成人免费视频网站 | 成人av免费播放 | 天堂аⅴ在线最新版在线 | www.香蕉视频 | 综综综综合网 | 女人天堂av| 和美女啪啪 | 欧美在线你懂的 | 欧美另类视频在线观看 | 中国性xxx| www.777奇米 | 看全色黄大色黄女片18 | 欧美一区二区三区视频在线观看 |