나는 설문지에 대한 사람들의 답변 목록을 가지고 있습니다. 답변은 현재 문자열 배열이므로 내 객체는 같습니다.동일한 답변을 모두 찾으십시오.
List<string[]> answers = new List<string[]>()
{ new string[]{"T","A","T","F","B"},
new string[]{"F","A","T","F","B"},
new string[]{"T","A","F","F","B"}
};
모든 값이 같은 배열 색인과 값을 찾아야합니다. 생성 된 객체가 될 수 string[]
{"","A","","F","B"}
거나 같을 것이라고 정의 객체 튜플의 일부 유형
추천 {1, "A"}, {3, "F"}, {4 'B'}모든 문자열 배열의 길이가 같다고 가정 할 수 있습니다.
나는 무차별 대입과 루프를 통해이 작업을 수행 할 수 있지만 Linq를 통해보다 효율적인 클리너 방법이 있는지 궁금합니다.
Linq는 단지 내부적으로 루프를 사용하며 절약은 코드 라인이며 로컬 변수를 생성해야한다는 유일한 질문입니다.
업데이트 : 떨어져가는 무엇 OR 매퍼 및 Vajura 나는 두 개의 루프
생각하고 있었는데 나에게 각 문자열 []의 길이를 제공하고 나에게 무엇을 제공 답변의 첫 번째 세트를 가져옵니다 대답은 있어야합니다. 첫 번째 사람이 다른 모든 비-A는 자동으로 인덱스의 자격을 박탈 할 대답 유일하더라도이 같은
for each index in string[]
answer = List[0][index]
for i=1 to List.Count - 1
compare answer to List[i][index]
if false exit loop
if we made it through it is good
** Linq **는 문법적 인 설탕 *이며 일리노이로 컴파일하면 후드 아래에서 루프 등이 사용됩니다. – christiandev
* 루프 *를 사용하는 것은 * 무차별 강제 *를 사용하는 것을 의미하지 않습니다. 그리고 네, LINQ는 내부적으로 루프를 사용하기 때문에 적절히 작성된 루프와 비교할 때 실행 효율성이 본질적으로 향상되지 않습니다. –
이 솔루션에는 다른 방법으로 "무력"이 없습니다. 모든 값을 확인해야합니다. 그것은 당신이 그것을 많이 최적화 할 수 있다고 말하면서 두 번째 문자열 배열의 첫 번째 인덱스가 이미 다음 다른 배열을 위해 더 이상 그 값을 검사 할 필요가 없다면 처음에는 다르다. 당신이 그것을 최적화 할 수있는 다른 작은 것들이있을 것입니다. – Vajura