C#检查List是否是另一个List的一部分

时间:2013-05-28 10:07:15

标签: c# list linq comparison subset

我有两个列表如下

 var query1 = from enrollments in db.Enrollments
             where enrollments.studentID == studentID && enrollments.result >= 50 && enrollments.enrolled == false
             select enrollments.subjectID;
 var query2 = from prerequisites in db.Prerequisites
              where prerequisites.subjectID == subjectID
              select prerequisites.prerequisiteID;

现在我想确保query2中的所有数字都存在于query1中。换句话说,我想确保query2是query1的一部分

有什么想法吗?

P.S

- 您可以确定subjectIDprerequisiteID是同一件事

- 我可以将query1和query2转换为query.ToList()

之类的列表

3 个答案:

答案 0 :(得分:14)

答案 1 :(得分:7)

您只需检查query2query1之间的设置差异是否为空集:

var isSubset = !query2.Except(query1).Any();

请参阅LINQ方法Enumerable.ExceptEnumerable.Any

答案 2 :(得分:1)

您是否看过使用Intersect(http://msdn.microsoft.com/en-us/library/bb460136.aspx) 给定两个IEnumebles,它将返回两者中存在的任何值的列表。

var presentInBoth = query1.Intersect(query2)

你可能需要调用.ToList()query1和query2来使它们成为IEnumerable