Dot*_*ude 0 linq asp.net linq-to-objects
如果我有2个字符串列表:
List<string> firstList = new List<string>("010", "111", "123");
List<string> secondList = new List<string>("010", "111", "999");
Run Code Online (Sandbox Code Playgroud)
如何比较列表中每个项目中的每个字符?例如:应将"0"与"0","1"与"1","0"与"0"进行比较,依此类推.似乎我可以使用,SelectMany但我坚持如何做到这一点
编辑:
这些列表在相互比较时应该返回true(因为星号表示任何字符,我正在验证以确保每个项目的长度恰好为3个字符)
List<string> firstList = new List<string>("010", "111", "123");
List<string> secondList = new List<string>("010", "1*1", "***");
Run Code Online (Sandbox Code Playgroud)
更新了通配符
class WildcardStringComparer : IEqualityComparer<string>
{
public bool Equals(string s1, string s2)
{
if (s1.Length != s2.Length) return false;
for (int i = 0; i < s1.Length; i++)
{
if (s1[i] != s2[i] && s1[i] != '*' && s2[i] != '*')
return false;
}
return true;
}
public int GetHashCode(string obj)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
List<string> firstList = new List<string>{"010", "111", "999"};
List<string> secondList = new List<string>{"010", "111", "999"};
bool res = firstList.SequenceEqual(secondList, new WildcardStringComparer()); // True
Run Code Online (Sandbox Code Playgroud)
和
List<string> firstList = new List<string>{"010", "111", "999"};
List<string> secondList = new List<string>{"010", "111", "*99"};
bool res = firstList.SequenceEqual(secondList, new WildcardStringComparer()); // True
Run Code Online (Sandbox Code Playgroud)
和
List<string> firstList = new List<string>{"010", "111", "999"};
List<string> secondList = new List<string>{"010", "111", "199"};
bool res = firstList.SequenceEqual(secondList, new WildcardStringComparer()); // False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1441 次 |
| 最近记录: |