私は次のlinqステートメントを作成しましたが、どういうわけか単純化できると感じずにはいられません。目的は、List<IEnumberable<Counterparty>>
(クエリのcounterpartyStatic)オブジェクトを取得し、Counterparty.CounterpartyIdと等しいClientIdを持つOrdersを見つけることです。これらの注文では、Counterparty.DescriptionFieldと一致するようにフィールドClientDescを更新する必要があります。これが完了したら、更新されたすべての注文を渡すイベントを発生させる必要があります。
OrderCacheは、明らかでない場合の辞書です。
既存のコードは次のとおりです。
var updates = new List<Order>();
lock (CacheLock)
{
counterpartyStatic.ToList().ForEach(cachedList =>
cachedList.ToList().ForEach(
counterparty =>
{
var orders = OrderCache.Where(kvp => kvp.Value.Client == counterparty.CounterpartyId);
orders.ToList().ForEach(kvp =>
{
kvp.Value.ClientDesc = counterparty.Description;
updates.Add(kvp.Value);
});
}));
}
RaiseEvent(updates);
助けてくれてありがとう