我面临一个问题,我甚至不知道要在Google/Stack Overflow中搜索什么。 如果您觉得需要进一步解释,提问,请发表评论。相交两个列表与第一个保存顺序
基本上我想交叉两个列表并返回与原始第一个字符串值的保留顺序的相似性。
例子:
我有两个字符串,我转换为CharArray。 我想交叉这两个数组并返回类似的值,包括/与第一个字符串(s1)的顺序。
正如你所看到的第一个字符串包含E15(在特定的顺序),也是如此秒一个。
所以这两个字符串将返回:{ 'E', '1', '5'}
string s1 = "E15QD(A)";
string s2 = "NHE15H";
我现在面临的问题是,如果我取代 “S2” 有:
string s2 = "NQE18H" // Will return {'Q', 'E', '1' }
我的操作将返回:{ 'Q', 'E', '1'}
结果应该是:{ 'E', '1'}因为Q没有弗洛w字母
目前我的操作不是最大的努力,因为我不知道在.NET中使用哪些方法能够做到这一点。
当前代码:
List<char> cA1 = s1.ToList();
List<char> cA2 = s2.ToList();
var result = cA1.Where(x => cA2.Contains(x)).ToList();
随时帮助我,在正确的方向指针是可以接受的,以及一个完整的解决方案。
使用'Intersect'会给你从第一个字符串订单[例这里( https://dotnetfiddle.net/KqSIPC)。但是你的需求表明你可能想编写自己的[与自定义相等比较器相交](http://stackoverflow.com/questions/4340273/intersect-with-a-custom-iequalitycomparer-using-linq) – 2015-03-13 10:23:11
应该怎么做是's1 =“AXBYC”'和's2 =“ABACUS”'的输出? – dasblinkenlight 2015-03-13 10:26:03
@CoderofCode会马上寻找。 – 2015-03-13 10:26:47