2011-06-13 4 views
5

Ben dize gibi bir şey böyle görünüyor değeri, ardından bir anahtar oluşan bir dize oluşturmak için çalışıyorum Şu ana kadar, şu anki konstrüksiyonu kullanmaya çalışıyorum:Anahtarlar değerlerle nasıl birleştirilir? anahtar değeri;; değer, anahtar; değer</p> </blockquote> <p>Yani</p> <blockquote> <p>tuşu:

var originalKeyValues = entity.ChangeTracker.OriginalValues.Keys.Concat(
    entity.ChangeTracker.OriginalValues.Values).ToString(); 

... ama bu istediğim şeyi üretmiyor.

Hem Keys ve ValuesDictionary<string, object>

cevap

6
string result=list.Select(w=>w.Key+";"+w.Value).Aggregate((c,n)=>c+","+n); 
+0

Boş bir sözlüğü işlemek için bunu nasıl değiştiririm. Seçimi toplu olarak ayırmak ister misiniz? –

+0

Boşsa, hiçbir şey yapmayın: 'string result = list.Count> 0? List.Select (w => w.Key +"; "+ w.Value) .Agregate ((c, n) => c + " "+ n):""; ' – Blindy

1
var originalKeyValues = entity.ChangeTracker.OriginalValues 
    .Select(OV => OV.Key + ";" + OV.Value) 
    .Aggregate((acc, next) => acc + "," + next)); 

I (denenmemiş) düşünmek vardır.

+0

@ -1, neyi yanlış yaptım? –

2

böyle yapardı:

sözlüğe itibaren
var x = new Dictionary<string, string> { { "key", "value" }, { "key2", "value2" } }; 

Console.WriteLine(
    String.Join(",", x.Select(d => String.Format("{0};{1}", d.Key, d.Value))) 
); 

sonra , listeyi katılmak bir ip enumerator seçin.

Çıktı:

result = (from a in list select a.Key + ";" + a.Value).Aggregate((current, next) => current + "," + next); 

biz de linq kullanmadan döngü basit deneyebilirsiniz:

foreach (KeyValuePair<String, String> a in list) 
      result += a.Key + ";" + a.Value + ","; 

Yada .NET kullanabilirsiniz yukarıda belirtilenler dışında yanında key;value,key2;value2

1

4 özelliğinin String.Join:

result = String.Join(",", (from a in list select a.Key + ";" + a.Value)); 
İlgili konular