我有2个名单。我想将它们组合成1个列表。
问题是两个列表中只有一个只有一个计数
firstList.Count = 1
虽然第二个列表的大小为两个:
secondList.Count = 2
所以我想将这些列表的机器人组合成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 :(得分: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
});
}
希望这就是你要求的。
答案 1 :(得分: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)
});
}
把它扔出去......