我有一个变量,它包含域名和用户名,例如[DOMAIN] / [User]。当我在linq查询查找中使用此变量时,它找不到用户,因为它用双反斜杠替换了单个反斜杠。
例如:
已更新
List<string> lstUsersToRemove = new List<string>() {"TEST\acuba","TEST\test2", "TEST\test3" };
foreach(string userName in lstUsersToRemove)
{
var user = listUsers.SingleOrDefault(x => x.UserName == userName);
if(user != null)
listUsers.Remove(user);
}
user始终为null,因为它看起来与具有双反斜杠的userName匹配。它寻找&#34; TEST \ acuba&#34;或&#34; TEST \ test2&#34;。我通过手动删除第二个反斜杠来测试它,并且能够找到正确的用户。
有没有办法纠正这个或另一种方法进行查找而不会因为反斜杠而失败?
提前感谢您的帮助。
答案 0 :(得分:0)
如何通过用单个替换双反斜杠来“比较”比较。
List<string> lstUsersToRemove = new List<string>() {"TEST/acuba","TEST/test2", "TEST/test3" };
foreach(string userName in lstUsersToRemove)
{
var user = listUsers.SingleOrDefault(x => x.UserName.Replace("//", "/") == userName.Replace("//", "/"));
if(user != null)
listUsers.Remove(user);
}
答案 1 :(得分:0)
你能尝试使用.Equals而不是== ......这给我带来了麻烦。试试这个
List<string> lstUsersToRemove = new List<string>() {"TEST\acuba","TEST\test2", "TEST\test3" };
foreach(string userName in lstUsersToRemove)
{
var user = listUsers.SingleOrDefault(x => x.UserName.Equals(userName));
if(user != null)
listUsers.Remove(user);
}
==期望对象相同,其中.Equals实际检查值。