C# içinde <string,object>
türünde iki sözlük var. Bir Dictionary nesnesinin tüm içeriğini bir döngüyü uygulamadan diğerine nasıl kopyalarım?İki sözlük, döngü olmadan nasıl birleştirilir?
cevap
var result = dictionaries.SelectMany(dict => dict)
.ToDictionary(pair => pair.Key, pair => pair.Value);
Sen Concat
kullanabilirsiniz:
Dictionary<string, object> d1 = new Dictionary<string, object>();
d1.Add("a", new object());
d1.Add("b", new object());
Dictionary<string, object> d2 = new Dictionary<string, object>();
d2.Add("c", new object());
d2.Add("d", new object());
Dictionary<string, object> d3 = d1.Concat(d2).ToDictionary(e => e.Key, e => e.Value);
foreach (var item in d3)
{
Console.WriteLine(item.Key);
}
Bu, IEnumerable
Bu doğru. Bunu işaret ettiğin için teşekkürler. Düzenleyecek –
İlk olarak, bu mümkün değil olmadan döngü. Bu döngü bir (uzantı) yönteminde gerçekleştirilip gerçekleştirilmediği, hala bir döngü gerektiriyor.
Aslında bunu manuel olarak yapmanızı tavsiye edeceğim. Verilen tüm diğer cevaplar iki uzatma metodu (Concat - ToDictionary ve SelectMany - ToDictionary) kullanmak ve böylece iki kez döngü yapmak zorundadır. kodunuzu optimize etmek için bu yapıyorsanız, sözlükte B üzerinde bir döngü yapmak daha hızlı ve
Düzenleme sözlük A'ya içeriğini var katacak: ToDictionary sırasında ayrıntılı araştırma yapılmış Concat işlem yalnızca oluşacak çağrı, ama hala özel bir uzantı yöntemi daha verimli olacağını düşünüyorum.
Eğer kod boyutunu azaltmak isterseniz, o zaman sadece bir uzantısı yöntemi yapmak:
IDictionary<string,objet> output = dictA.Merge(dictB);
:
public static class DictionaryExtensions
{
public static IDictionary<TKey,TVal> Merge<TKey,TVal>(this IDictionary<TKey,TVal> dictA, IDictionary<TKey,TVal> dictB)
{
IDictionary<TKey,TVal> output = new Dictionary<TKey,TVal>(dictA);
foreach (KeyValuePair<TKey,TVal> pair in dictB)
{
// TODO: Check for collisions?
output.Add(pair.Key, Pair.Value);
}
return output;
}
}
Sonra DictionaryExtensions ad ve yazma ('kullanarak') ithal ederek kullanabilirsiniz
Yöntemi, nesneler değişmez gibi harekete geçirdim, ancak yeni bir sözlük döndürmemek ve sadece dictA'ya birleştirmek için kolayca değiştirebilirsiniz.
var d3 = d1.Concat(d2).ToDictionary(x => x.Key, x => x.Value);
Bu, Bruno'nun cevabıyla tamamen aynıdır. –
Simpleed ama aynı cevap evet, downvote için bir neden değil – RvdK
Üzgünüz ama ben bruno ToDictionary aramayı dahil etmek için onun cevabını güncelledi önce - daha önce kod bir IEnumerable dönüyordu
- 1. Julia'da, bir sözlük nasıl birleştirilir?
- 2. iki LPCWSTR nasıl birleştirilir?
- 3. nasıl birleştirilir iki SwiftyJSON
- 4. İki github hesabı nasıl birleştirilir
- 5. Python'da iki matris nasıl birleştirilir?
- 6. İki dize dalda nasıl birleştirilir?
- 7. Java'da iki ResultSets nasıl birleştirilir?
- 8. İki diziyi birlikte nasıl birleştirilir?
- 9. Python'da iki sözlük birleştirilemiyor
- 10. İki grafik dosyası nasıl birleştirilir? (PHP, Imagick)
- 11. İki Toplam işlemi LINQ kullanarak nasıl birleştirilir?
- 12. Unix sistemindeki iki dosyanın sütunları nasıl birleştirilir?
- 13. Bu iki do/while deyimi nasıl birleştirilir?
- 14. Three.JS'de bir BufferGeometry'de iki BufferGeometry nasıl birleştirilir?
- 15. SQL'de bir satırda iki satır nasıl birleştirilir?
- 16. Bir qtable satırının iki hücresi nasıl birleştirilir?
- 17. İki jQuery animasyon eylemi nasıl birleştirilir?
- 18. Belirli bir özellikte iki liste nasıl birleştirilir?
- 19. İki farklı git deposu iki dalda biriyle nasıl birleştirilir?
- 20. matlab - 2 matris nasıl birleştirilir/birleştirilir?
- 21. İki sözlük listesi arasındaki fark nasıl bulunur?
- 22. Orijinali koruyarak iki sözlük birleştirme
- 23. Negatif öğeleri döngü olmadan nasıl sıfırlarsınız?
- 24. Ana döngü olmadan oyun programlama
- 25. sözlük?
- 26. Sözlük
- 27. Sıralı diziler nasıl birleştirilir?
- 28. Numpy.ndarrays nasıl birleştirilir?
- 29. İki .apk dosyası nasıl birleştirilir ve bir .apk dosyası oluşturulur?
- 30. Formlar iki farklı çözümden birlikte nasıl birleştirilir C#
Sorunuzdaki tür adı AWOL gitti. – dommer
Eğer birleştirme arıyorsanız, şu adrese başvurmalısınız: http://stackoverflow.com/questions/294138/merging-dictionaries-in-c – annakata