有了這個代碼管理空與LINQ
var res = (from p in list where
p.FirstName.ToUpper() == firstName.ToUpper() ||
p.LastName.ToUpper() == lastName.ToUpper() select p).ToList<Client>();
的p.FirstName,或中的firstName可以爲NULL我如何管理呢?
謝謝,
有了這個代碼管理空與LINQ
var res = (from p in list where
p.FirstName.ToUpper() == firstName.ToUpper() ||
p.LastName.ToUpper() == lastName.ToUpper() select p).ToList<Client>();
的p.FirstName,或中的firstName可以爲NULL我如何管理呢?
謝謝,
像這樣:
bool areEquivalent = string.Compare(s1, s2, true) == 0;
這句柄null? – BrokenGlass 2011-03-14 14:42:16
@Broke:是的,它的確如此。 – SLaks 2011-03-14 14:42:31
+1是使用'string.Equals'唯一的答案(就像現在)。 – 2011-03-14 14:43:49
使用String.Equals()指定不區分大小寫。
var res = (from p in list where
p.FirstName != null && firstName != null && p.FirstName.ToUpper() == firstName.ToUpper() ||
p.LastName.ToUpper() == lastName.ToUpper() select p).ToList<Client>();
我通常不區分大小寫字符串打交道時,就像使用string.Compare
?
var res = (from p in list where
(p.FirstName ?? "").ToUpper() == (firstName ?? "").ToUpper() ||
(p.LastName ?? "").ToUpper() == (lastName ?? "").ToUpper() select p)
.ToList<Client>();
這真的取決於你想要做什麼,當要麼是null
。這應該將null
視爲與用於比較目的的空字符串等效。
事情是這樣的:
where String.Equals(p.LastName, lastName, StringComparison.OrdinalIgnoreCase)
您可以使用string.Compare
。
string x = null;
string y = null;
//both NUnit tests pass
Assert.IsTrue(string.Equals(x, y));
Assert.AreEqual(0, string.Compare(x, y, true));
...
var ignoreCase = true;
var res = (from p in list
where string.Compare(p.FirstName, firstName, ignoreCase) == 0 ||
string.Compare(p.LastName, lastName, ignoreCase) == 0
select p).ToList<Client>();
這似乎是一個非常奇怪的查詢。如果名字和姓氏是「約翰」和「史密斯」,那麼客戶名單是每個人的名字都是約翰,每個人的姓都是史密斯。你確定這個查詢是你真正想要的嗎? – 2011-03-14 14:51:48
名字不是強制性的 – 2011-03-14 14:55:59