【发布时间】:2018-02-06 17:41:43
【问题描述】:
有没有办法在 LINQ 中编写短代码来检查一个数组是否是另一个数组的子序列并遵守顺序?
例如(伪代码):
var masterList = new double[] {0,1,2,3,4};
var lst1 = new double[] {0,1,2,3};
var lst2 = new double[] {0,1,3,4};
var lst3 = new double[] {2,3,4};
var lst4 = new double[] {3,4};
var lst5 = new double[] {4,3};
bool isSubseq1 = lst1.Compare(masterList); // true
bool isSubseq2 = lst2.Compare(masterList); // false
bool isSubseq3 = lst3.Compare(masterList); // true
bool isSubseq4 = lst4.Compare(masterList); // true
bool isSubseq5 = lst5.Compare(masterList); // false
编辑:
bool isSubseq = !lst5.Except(masterList).Any(); // returns true, but I want to return false
编辑2: 例 2:
var masterList = new double[] {0,1,2,3,4,4,4,5,6,6,8,8};
var lst1 = new double[] {0,1,2,3};
var lst2 = new double[] {0,3,4};
var lst3 = new double[] {4,4,4};
var lst4 = new double[] {6,6,8,8};
var lst5 = new double[] {5,4,4,4,3};
var lst6 = new double[] {9,9};
bool isSubseq1 = lst1.Compare(masterList); // true
bool isSubseq2 = lst2.Compare(masterList); // false
bool isSubseq3 = lst3.Compare(masterList); // true
bool isSubseq4 = lst4.Compare(masterList); // true
bool isSubseq5 = lst5.Compare(masterList); // false
bool isSubseq6 = lst6.Compare(masterList); // false
是的,我可以编写自己的方法,但这不是我要求的。我将接受嵌套查询。
【问题讨论】:
-
你可以自己写函数
-
@Yuriy Faktorovich 这不是重复的,因为 OP 想要相同订单的子集。
-
@maccettura 很明显,他们甚至在得到答案之前就已经知道该怎么做了。他们只是不想。