首页 > 解决方案 > 如何比较两个列表

问题描述

我有一个从用户那里收到的答案列表,如下所示:

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。如何比较这两个列表并确定哪些答案是正确的?

标签: c#list

解决方案


使用真实答案问题的 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)));

推荐阅读