我实际上是一名 SQL 开发人员,但现在从事 C# 和 LINQ 方面的工作。我心中有一个逻辑,但由于技术障碍,我无法实现它。
我将有 2 个字符串数组。以下是我要实现的条件,
- 我想知道数组 2 的元素是否存在于数组 1 中。
- 然后检查两个数组的元素顺序。
例如。 正确大小写
字符串 1:{"ID","Name","Age","Address","Gender","Phone"}
字符串 2:{"ID","Name","Phone"}
所以这应该返回 true,因为数组 2 的所有元素都存在于数组 1 中并且顺序也是正确的。
大小写错误
字符串 1:{"ID","Name","Age","Address","Gender","Phone"}
字符串 2:{"ID","Name","Phone","Address"}
这应该返回 false,尽管数组 1 中存在数组 2 元素,“Phone”出现在“Address”之前,但在数组 1 中“Address”出现在“Phone”之前。序列不正确,因此它应该返回 false。
这可能吗?我还没有写任何代码,因为我是 LINQ 的新手。如果不是 LINQ,请问我这在 C# 中是否可行,
最佳答案
您可以使用Intersect
和SequenceEqual
:
string[] a = new [] {"ID","Name","Age","Address","Gender","Phone"};
string[] b = new [] {"ID","Name","Phone"};
string[] c = new [] {"ID","Name","Phone","Address"};
Console.WriteLine(a.Intersect(b).SequenceEqual(b));
Console.WriteLine(a.Intersect(c).SequenceEqual(c));
Intersect
将获取同时出现在 a 和 b 中的元素,然后 SequenceEqual
将确保它们的顺序相同。
值得注意的是,Intersect()
有效地调用了 .Distinct()
,因此它仅在列表仅包含唯一元素时才有效。 Intersect()
将忽略任一列表中的重复项。
关于c# - 比较 2 个字符串数组元素并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50422781/