【发布时间】:2021-09-19 21:04:49
【问题描述】:
我需要写一个 if 条件。只有当国家列表 [A,B,C] 中的所有国家都在单独的列表中可用时,才应输入 if 条件。
CASE 1:如果SeparateList 包含[A,B,C,D,E] 并且如果nationalities List 包含[A,B,C],则nationalities List 中的所有值都可以在SeparateList 中使用。因此它应该满足'if'条件。
CASE 2 :如果SeparateList 包含[A,C,D,E] 并且如果nationalities List 包含[A,B,C],则nationalList 中的B 值在SeparateList 中不可用。因此它不应该满足'if'条件。
但目前我的 if 条件满足案例 2。我认为这是因为 Intersect。 所以请提出任何想法。
nationalities.Add(nation.ToUpper().Trim()); //contains list of nationalities [A,B,C]
if(nationalities.Intersect(separateList(bg.Nationality)).Any())
{
// code
}
private List<string> separateList(string input)
{
return input.ToUpper().Trim().Split(',').ToList();
}
【问题讨论】:
-
我不明白你的情况 2,“国籍列表中的 B 值”也不是(不是),“B 值 [...] 在单独列表中不可用”(它是)
-
是的,在情况 2 条件下出错。现在更正了。
-
好的。使用
Except而不是Intersect应该可以解决问题 -
同意
Except将证明它像:containsAll = !nationalities.Except(separateList).Any();或containsAll = separateList.Union(nationalities).Count() == separateList.Count -
要获得奖励积分,请使用
.Except(separateList, StringComparer.CurrentCultureIgnoreCase).Any()并将这些电话转至ToUpper()
标签: c# list if-statement conditional-statements