İki veya daha fazla dizim var - biri kimlikli, bir veya daha çok dize değeri olan. Bunları bir hash tablosuna birleştirmek istiyorum, böylece ID ile değerleri arayabilirim.C# dizilerinde birleştirme/birleştirme #
aşağıdaki fonksiyon iş yapar, ama daha kısa ve daha tatlı sürümü (LINQ?) Güzel olurdu:
Dictionary<int, string[]> MergeArrays(IEnumerable<int> idCollection,
params IEnumerable<string>[] valueCollections)
{
var dict = new Dictionary<int, string[]>();
var idL = idCollection.Count();
while (idL-- > 0)
{
dict[idCollection.ElementAt(idL)] = new string[valueCollections.Length];
var vL = valueCollections.Length;
while (vL-- > 0)
dict[idCollection.ElementAt(idL)][vL] = valueCollections[vL].ElementAt(idL);
}
return dict;
}
Herhangi bir fikir?
> tüm bu çağrılar IEnumerable uyguluyor bağlıdır bütün dizisi geçmekte edilecektir. Aslında bir dizi ise çok hızlı olacaktır. Bağlı bir liste gibi bir şey kullanırsanız, verimsiz olur. –
@Dan: Enumerable.ElementAt'ın IList'un bir uygulamasının denetlendiğinin farkında değildim. Bu büyük bir fark yapar. Düzenleyecek –
Benim durumumda, hem idCollection hem de valueCollections dizilerdir. Sadece daha jenerik yapmaya çalıştım - gelecekteki ihtiyaçları öngörmek için dikkat çekmeye çalışan klasik bir örnek. Bunlar katılmam gereken form verisi dizileridir ve asla dizilerden başka bir şey olmayacaklardır. – Bergius