2013-11-03 2 views
0

나는 2 개의 목록이 있습니다. 나는 그들을 1 목록으로 결합하고 싶다.C#에서 두 개의 서로 다른 크기 목록 결합하기

secondList.Count = 2

: 두 번째 목록 두 크기이지만

문제는 두 개의리스트 중 하나는

firstList.Count = 1

하나만 카운트 크기

그래서이 목록의 봇을 하나의 목록으로 결합하려고합니다.

megaList => firstList {0, Empty}, 
      secondList {0 , 2} 

두 개의 목록이 같은 크기가 아니기 때문에 내 코드가 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

List<QuestionAndResponses> megaList = new List<QuestionAndResponses>(); 
       for (var i = 0; i < firstList.Count(); i++) 
       { 
        megaList.Add(new QuestionAndResponses() 
        { 
         Responses = new List<Response>(firstList[i].Response), 
         Questions = new List<Question>(secondList[i].Questions) 
        }); 
       } 

내 모델과 같이 보입니다 :

public class QuestionAndResponses 
    { 
     public PreScreener Question { get; set; } 
     public PreScreenerResponse Response { get; set; } 
    } 
+0

당신이 결과를보고 무엇을 원하는가? – allonhadaya

+0

questionAndResponses List에 firstList와 secondList를 둘 다 원합니다. 즉, 두 개의 배열을 하나의 큰 배열로 결합하는 것입니다. – allencoded

+2

응답과 질문의 상관 관계를 관리하는 비즈니스 로직은 무엇입니까? 다시 말해서, 응답은 그들이 속한 질문을 알고 있습니까? – allonhadaya

답변

0

이 두 목록 및 당신이 거기에 저장할이 왜 정확히 모른다. 그러나 코드에 대한 간단한 변경만으로 더 큰 목록을 반복하지 않는 이유는 무엇입니까?

List<QuestionAndResponses> megaList = new List<QuestionAndResponses>(); 
var biggerList = firstList.Count() > secondList.Count() ? firstList : secondList 
for (var i = 0; i < biggerList.Count(); i++) 
{ 
    var response = firstList.Count() >= i+1 ? new List<Response>(firstList[i].Response) : new List<Response>(); 
    var questions = secondList.Count() >= i+1 ? new List<Question>(secondList[i].Questions) : new List<Question>(); 

    megaList.Add(new QuestionAndResponses() 
     { 
     Responses = response, 
     Questions = questions 
     }); 
} 

희망하시는 답변입니다.

+0

그게 효과가 있을지도 모르겠다. – allencoded

0

귀하의 모델이 잘못되었을 수 있다고 생각하지만, 나보다 잘 알 것입니다. 첫 번째 배열의 응답이 같은 질문에 속해 있습니까? 하나의 질문에 둘 이상의 응답이있을 수 있습니까? 이 경우, 당신의 모델이 될 수있다 :

public class QuestionAndResponses 
{ 
    public PreScreener Question {get; set;} 
    public IEnumerable <PreScreenerResponse> Responses {get; set;} 
} 

var questionAndResponses = new List<QuestionAndResponses>(); 
foreach (var question in secondList) 
{ 
    questionAndResponses.Add(
      new QuestionAndResponses 
      { 
       Question = question, 
       Responses = firstList.Where(f => f.QuestionId = question.QuestionId) 
      }); 
} 

그냥 거기에 그것을 던져 ...