2014-07-25 2 views
0

두 개의 열이 포함 된 배열 목록이 있습니다. foreach 루프도 있습니다. 루프 1 열만 지정할 수 있습니까? 도움이나 조언을 주시면 감사하겠습니다. 고맙습니다.배열 목록의 각 루프마다 열을 지정할 수 있습니까? C#

foreach (object[] row in myArrayList) 
{ 
    foreach (object column in row) //I want to specify just the first column here 
    {} 
} 
+4

방법에 대해 할 것인가? – Chris

+0

행은 열 배열입니다 – Jonesopolis

+4

왜 당신은 여전히'ArrayList'를 사용하고 계십니까? 형식 안전 컬렉션을 사용하십시오. 그리고 임의의 객체를 다루는 대신에 테이블을위한 클래스를 만드는 것을 고려해보십시오. –

답변

4

C#의 행이나 열과 같은 개념은 없습니다. 그래서

var myArrayList = new[] { new[] { obj1, obj2 }, new[] { obj3, obj4 } } 

내가 바로 질문을 얻는 경우에, 당신은 싶습니다 : 당신이 갖고있는 것 같다 것은 중첩 배열의 경우, 즉 각 행으로 자체 배열 인 행의 배열을 가지고있다 예를 들어 obj1obj3을 추출하십시오.이 값은 myArrayList의 "첫 번째"열입니다.

var firstColumn = myArrayList.Select(row => row[0]) 

그런 다음 당신이 그것을 반복 할 수 있습니다 :

foreach (object cell in firstColumn) 
{ ... } 

당신은 열을 추출 할 수 없습니다,하지만 당신은 당신이 LINQ Select를 사용하여 원하는 무엇이든로 배열 요소를 ("행") 변환 할 수 있습니다 BTW : 변수 이름 myArrayList은 배열이 아닌 ArrayList을 사용하고 있음을 암시 할 수 있습니다. 차이점은 없습니다. C#의 배열 및 모든 컬렉션은 모두 IEnumerable을 구현합니다. 이는 foreach뿐 아니라 LINQ를 사용하기위한 유일한 전제 조건입니다.

+0

두 개의 개별 배열로 더 좋을까요? 각 열에 하나씩 – user3809554

+0

@ 사용자, 이것은 일반적으로 말할 수 없습니다. 그것은 주로 데이터로 무엇을하고 있는지에 달려 있습니다. 중요한 액세스의 대부분이 열 기반 인 경우 "예"일 수 있습니다. 그러나 이는 다른 결정에 영향을 미칩니다. 예를 들어, 열 기반 데이터베이스를 사용할 것인지 (데이터베이스에서 데이터를 가져 오는 경우)를 결정할 수 있습니다. – chiccodoro

0

다음 코드는`행 [0]`에 대해

foreach (object[] row in myArrayList) 
{ 
    object column = row[0] 
    //Do what ever you want to do with column 
} 
관련 문제