c# - 比较 2 个字符串数组元素并返回

标签 c# arrays linq

我实际上是一名 SQL 开发人员,但现在从事 C# 和 LINQ 方面的工作。我心中有一个逻辑,但由于技术障碍,我无法实现它。

我将有 2 个字符串数组。以下是我要实现的条件,

  1. 我想知道数组 2 的元素是否存在于数组 1 中。
  2. 然后检查两个数组的元素顺序。

例如。 正确大小写

字符串 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# 中是否可行,

最佳答案

您可以使用IntersectSequenceEqual:

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() 将忽略任一列表中的重复项。

Fiddle

关于c# - 比较 2 个字符串数组元素并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50422781/

相关文章:

c# - 使用 Microsoft.Azure.WebJobs.Extensions.ServiceBus 5.5.1 以编程方式设置连接字符串

ios - Swift - 函数在附加字典中的键值后仅返回 nil?

c - sprintf 组合字符数组

JavaScript:如何映射两个对象以获得将第一个对象的 ID 映射到另一个对象的名称的输出?

c# - 如果适用,将嵌套的 ForEach 替换为 Select

c# - 否定表达式树中的方法调用

c# - 从格式 dd.MM.yyyy hh :mm:ss 将字符串解析为 .net 核心中的日期时间

c# - "Can' t 创建目录,因为目录没有 't exist"

.net - 使用 XmlDocuments、XSLT 或 Linq 解析 Xml、XPath 哪个更有效?

c# - 编辑 float 窗口关闭按钮