假设我有一个字符串列表,如下所示:
var candidates = new List<String> { "Peter", "Chris", "Maggie", "Virginia" };
Run Code Online (Sandbox Code Playgroud)
现在,我想验证另一个List<String>,让我们称之为list1,只包含每个候选人一次.我怎么能这样做,简单?我想我可以用Intersect().我也希望找到失踪的候选人.
private bool ContainsAllCandidatesOnce(List<String> list1)
{
????
}
private IEnumerable<String> MissingCandidates(List<String> list1)
{
????
}
Run Code Online (Sandbox Code Playgroud)
订单无关紧要.
这在速度方面可能不是最佳的,但是两个查询都足够短以适合单行,并且易于理解:
private bool ContainsAllCandidatesOnce(List<String> list1)
{
return candidates.All(c => list1.Count(v => v == c) == 1);
}
private IEnumerable<String> MissingCandidates(List<String> list1)
{
return candidates.Where(c => list1.Count(v => v == c) != 1);
}
Run Code Online (Sandbox Code Playgroud)