2016-03-20 18 views
-2

Bir dizi denilen UsedCars [10,5]muliti-koşullar C# dizi sorgulamak için nasıl

var Ve ben her otomobil markası toplamını almak istiyorum

Car Brand  Car Color Quantity 
Alfa Romeo   Red   5 
Dodge    Blue  1 
Ferrari   Yellow  12 
Dodge    Blue  3 
Alfa Romeo   Red   5 
Dodge    Red   18 

gibi veri görünüyor bulunuyor aynı renkte Öyleyse ben bir qu yapmak için DataTable tüm satırlarda bir döngü yapmak Benim fikrim bir Datatable içine UsedCars diziden bu verilerin tamamını ekliyor

Alfa Romeo   Red   10 
Dodge    Blue  4 
Ferrari   Yellow  12 
Dodge    Red   18 

olmalıdır sonuçlanabilir Her satırda ery (select) ve miktarı özetlemek için veriyi karşılaştırın ve hepsini tekrar Dataly

Kaynakların kullanımını ve çalışma süresini azaltmak için herhangi bir kısa yol ekleyin.

+2

Do senin dizinin asıl beyanı bulunmaktadır! - LINQ'a bakmak isteyebilirsiniz. – TaW

cevap

0

Ben sizin için iyi bir LINQ uygulanmasını bulmaya çalıştı, ama her tek bir "hücrenin üzerinde listeleyicisi yineler sağlanan çünkü LINQ ile çok boyutlu diziler (object[,]) birleştirmek için çok zor görünüyor "dizinin.

Dictionary<string, Dictionary<string, int>> usedCars = new Dictionary<string, Dictionary<string, int>>(); 
for(int i=0; i<UsedCars.GetLength(0); i++) 
{ 
    string brand = UsedCars[i, 0].ToString(); 
    string color = UsedCars[i, 1].ToString(); 
    int quantity = (int)UsedCars[i,2]; 

    if (!usedCars.ContainsKey(brand)) 
     usedCars.Add(brand, new Dictionary<string, int>()); 

    if (usedCars[brand].ContainsKey(color)) 
     usedCars[brand][color] += quantity; 
    else 
     usedCars[brand][color] = quantity; 
} 

Ben marka, renk ve bize "satır başına ilk üç "hücreler" olduğunu gösterdi Sayısı varsayılmaktadır:

yüzden daha iyi bir yaklaşım, böyle bir sözlükte miktarları eklemektir tahmin "object[10,5] dizinizde.


çıkan Sözlük

bu gibi kullanılabilir:

Console.WriteLine($"Quantity of yellow ferraris: {usedCars["Ferrari"]["Yellow"]}"); 
İlgili konular