我有一个类比较2列出了用null值
public class User
{
public int id { get; set; }
public string code { get; set; }
}
之一,我想用一个特定的代码值
List<User> users = new List<User>();
users.Add(new User() { id = 1, code="A"});
users.Add(new User() { id = 2, code = null });
users.Add(new User() { id = 3, code = "C" });
users.Add(new User() { id = 4, code = "C" });
users.Add(new User() { id = 5, code = "B" });
string[] possibleValues = new string[] { null, "A", "B" };
var result = users
.Where(u => possibleValues
.Any(l => l.Equals(u.code)))
.ToList();
我得到NullReferenceException
因为possibleValues
在有null
找到用户它。我明白那个。有人可以提出一个更好的方法来做到这一点。
在这里,您可以简单地使用'=='运算符。当查看[String code](https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/string.cs)时,== ==运算符具有以下代码:'public static bool operator = =(String a,String b){0}返回String.Equals(a,b); }'。所以这个代码'possibleValues.Any(l => l == u.code)'将会工作得很好。 – dee
是的,我同意你的意见。在看完德米特里的回答后,我明白了这一点。然而。我更喜欢他的回答,因为这给了我灵活地添加StringComparison.OrdinalIgnoreCase – Rajat
好吧,在这种情况下,您确实需要直接调用'string.Equals'静态方法,因为'string'上的'=='运算符执行一个序数敏感和文化不敏感)的比较。 – dee