From af6cc8cb47ea9a5b52a730d7b7a6c54ee1b68c11 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 12 二月 2025 22:43:36 +0800 Subject: [PATCH] 11 --- StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs | 23 +++++++++++++++++++++++ StandardPda/MES.Service/service/BasicData/MesRohInManager.cs | 3 ++- 2 files changed, 25 insertions(+), 1 deletions(-) diff --git a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs index 67e8fab..4781880 100644 --- a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs +++ b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs @@ -1,6 +1,7 @@ 锘縰sing MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; +using MES.Service.util; using SqlSugar; namespace MES.Service.service.BasicData; @@ -152,7 +153,7 @@ private List<MesRohInData> GetMesRohInDatas( List<ErpRohinData> erpRohinDatas, string type) { - return erpRohinDatas.Select(s => + return erpRohinDatas.DistinctByConcurrent(x => x.id).Select(s => { var entity = new MesRohInData { diff --git a/StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs b/StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs new file mode 100644 index 0000000..022bb36 --- /dev/null +++ b/StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs @@ -0,0 +1,23 @@ +锘縰sing System.Collections.Concurrent; + +namespace MES.Service.util; + +public static class LinqThreadSafeExtensions +{ + // 绾跨▼瀹夊叏鐗堟湰锛堝熀浜嶤oncurrentDictionary锛� + public static Func<T, bool> DistinctByKey<T, TKey>( + Func<T, TKey> keySelector) + { + var seen = new ConcurrentDictionary<TKey, bool>(); + return item => seen.TryAdd(keySelector(item), true); + } + + // 鎵╁睍鏂规硶鐗堟湰锛堟帹鑽愶級 + public static IEnumerable<T> DistinctByConcurrent<T, TKey>( + this IEnumerable<T> source, + Func<T, TKey> keySelector) + { + var seen = new ConcurrentDictionary<TKey, bool>(); + return source.Where(item => seen.TryAdd(keySelector(item), true)); + } +} \ No newline at end of file -- Gitblit v1.9.3