-1

有没有一种简单的方法可以比较两个集合?

我所拥有的是以下内容:

ICollection<AnswerDetail> rfc; // Responses from Client
ICollection<AnswerDetail> afd; // Answer from Database

我想有一种方法来比较两个集合并检查Responserfc 中字段的值是否与Correctafd 中的字段值匹配

这是 AnswerDetail 类:

public class AnswerDetail
{
    public int AnswerId { get; set; }
    public string Text { get; set; }
    public Nullable<bool> Correct { get; set; }
    public Nullable<bool> Response { get; set; }
}
4

2 回答 2

1

如果集合已经订购,您可以实现一个比较器:

    public class FancyComparer : IEqualityComparer<AnswerDetail>
    {
        public bool Equals(AnswerDetail x, AnswerDetail y)
        {
            return x.AnswerId == y.AnswerId && x.Correct == y.Response;
        }

        public int GetHashCode(AnswerDetail obj)
        {
            return obj.AnswerId;
        }
    }

然后使用序列等于:

var equlas = afd.SequenceEqual(rfc, new FancyComparer());

如果它们没有被订购,那么您必须先订购它们(OrderBy例如,使用 )

var equals = afd.OrderBy(x => x.AnswerId)
                .SequenceEqual(rfc.OrderBy(x => x.AnswerId), new FancyComparer());
于 2013-09-18T05:29:50.847 回答
0
bool RfcEqualsAfd=rfc.All(q=>
                         afd.Any(a=>
                                q.Response==a.Correct && 
                                q.AnswerId==a.AnswerId
                                )
                         );
于 2013-09-18T05:12:07.043 回答