c# - 如何比较两个列表
问题描述
我有一个从用户那里收到的答案列表,如下所示:
List<UserAnswerToQue> lstGetUserAnswerIndex = new List<UserAnswerToQue>();
UserAnswerToQue 类如下所示:
public class UserAnswerToQue
{
int _Qu_Id;
string _Title;
public UserAnswerToQue(int qu_Id, string ans_Title)
{
_Qu_Id = qu_Id;
_Title = ans_Title;
}
}
并列出问题的真实答案:
var ListFinalTrueAnswer = (from x in FilteredTrueReceivedAnswerList
select (x.qu_Id, x.ans_Title)).ToList();
列表 ListFinalTrueAnswer 包含 Item1 和 Item2
我想找到用户对问题给出的真实答案,为此我需要比较两个列表 lstGetUserAnswerIndex 和 ListFinalTrueAnswer。如何比较这两个列表并确定哪些答案是正确的?
解决方案
使用真实答案问题的 ID 创建一个哈希集。(为了快速查找)
var trueAnswers = ListFinalTrueAnswer.Select(x => (x.qu_Id, x.ans_Title)).ToHashSet();
比使用哈希集过滤您的列表,
var userAnswers = lstGetUserAnswerIndex.Where(x => trueAnswers.Contains((x._Qu_Id, x._Title)));