LINQ

2009-11-23 9 views
13

के माध्यम से दो आयामी सरणी उत्पन्न करें मैं इकाइयों के बीच एक सहसंबंध का प्रतिनिधित्व करते हुए युगल का मैट्रिक्स बनाने की कोशिश कर रहा हूं।LINQ

यहाँ मैं यह कैसे LINQ

double[][] correlationsRaw = (from e in entitiesInOrder 
           select 
           (from f in entitiesInOrder 
            select correlations.GetCorrelation(e, f) 
           ).ToArray()).ToArray(); 

कि ठीक काम करता है के माध्यम से कर रहा हूँ है।

लेकिन क्या मैं चाहते जो दो आयामी सरणी ( डबल []), नहीं एक दांतेदार सरणी है।

जाहिर है, मैं लूप के लिए कुछ नेस्टेड लिख सकता हूं ताकि एक दूसरे को परिवर्तित किया जा सके।

लेकिन क्या यहां कुछ सुरुचिपूर्ण LINQ चाल है जिसका मैं उपयोग कर सकता हूं?

उत्तर

14

मुझे नहीं लगता कि सीधे एक LINQ क्वेरी से एक बहुआयामी सरणी लौटने का एक आसान तरीका है कि ... लेकिन आप एक समारोह है कि एक दांतेदार सरणी लेता बना सकते हैं और एक बहुआयामी सरणी वापसी:

public T[,] JaggedToMultidimensional<T>(T[][] jaggedArray) 
{ 
    int rows = jaggedArray.Length; 
    int cols = jaggedArray.Max(subArray => subArray.Length); 
    T[,] array = new T[rows, cols]; 
    for(int i = 0; i < rows; i++) 
    { 
     cols = jaggedArray[i].Length; 
     for(int j = 0; j < cols; j++) 
     { 
      array[i, j] = jaggedArray[i][j]; 
     } 
    } 
    return array; 
} 

वैसे, यह एक विस्तार विधि हो सकती है, जिससे आप इसे एक लिंक क्वेरी में उपयोग कर सकते हैं ...

+1

@StuartLC या केवल 'int j = 0; j

संबंधित मुद्दे