这些不是字符串数组,而是两个字符串。
因此,您实际上需要在检查内容相等性之前将它们拆分为子字符串。
你可以这样做:
string _exists = "Adults,Men,Women,Boys";
string _check = "Men,Women,Boys,Adults,fail";
var checks = _check.Split(',');
var exists = _exists.Split(',');
bool stringsEqual = checks.OrderBy(x => x).SequenceEqual(exists.OrderBy(x => x));
为了加快一些特殊情况,您可以在调用 LINQ 代码之前检查长度(在长度不同的情况下避免两个 OrderBy)。此外,为了节省内存,您可以在拆分数组上使用就地排序,即:
string _exists = "Adults,Men,Women,Boys";
string _check = "Men,Women,Boys,Adults,fail";
var checks = _check.Split(',');
var exists = _exists.Split(',');
if(checks.Length != exists.Length)
return false;
Array.Sort(checks);
Array.Sort(exists);
if (checks.SequenceEqual(exists))
return true;
return false;
显然,这些优化仅在您的字符串非常长时才有用,否则您可以简单地使用 LINQ 单线。