我实际上是一个SQL开发人员,但现在正在研究C#和LINQ.我脑子里有一个逻辑,但由于技术障碍,我无法实现它.
我将有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来说是全新的.如果可以在C#中使用,如果不是LINQ,只是请问我,
你可以使用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));
Run Code Online (Sandbox Code Playgroud)
Intersect将获得a和b中都存在的元素,然后SequenceEqual确保它们的顺序相同.
值得注意的是Intersect()有效调用.Distinct(),因此仅当列表仅包含唯一元素时才会起作用.任何列表中的重复项都将被忽略Intersect().
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |