假設我有這個字典:
var Dict = Dictionary<Obj, Value>
我想創建一個新的:
var Dict2 = Dictionary<Obj.ParentId, Value>
但是,可能存在具有相同 的物件ParentId,因此在創建新字典時會出現問題。任何兩個具有相同值的條目ParentId都將具有相同的值,所以我只關心保留其中一個條目。有沒有辦法通過LINQ輕松做到這一點?
uj5u.com熱心網友回復:
最簡單的方法可能是強制使用回圈。在這種方法中,最后一個獲勝 - 但是,正如您所說,這對您的情況無關緊要:
var dict2 = new Dictionary<Obj.ParentId, Value>();
foreach (var (key, value) in dict1)
{
dict2[key.ParentId] = value;
}
您也可以使用 LINQ 執行此操作,但由于它必須首先執行“不同”部分,因此它的性能可能較低:
var dict2 = dict1
.DistinctBy(x => x.Key.ParentId)
.ToDictionary(x => x.Key.ParentId, x => x.Value);
uj5u.com熱心網友回復:
您可以使用Linq :查詢Dict并將結果具體化為Dict2
var Dict2 = Dict
.GroupBy(pair => pair.Key.ParentId, pair => pair.Value)
// Or group.Last().Value or some other logic
.ToDictionary(group => group.Key, group => group.First().Value);
或者你可以嘗試回圈:
var Dict2 = Dictionary<Obj.ParentId, Value>();
foreach (var pair in Dict)
Dict2.TryAdd(pair.Key.ParentId, pair.Value);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/453926.html
上一篇:如何鏡像HBITMAP
