我有一個類比較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