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