2010-12-10 57 views
2
Assert.IsTrue(benefits.Count(P => string.IsNullOrEmpty(P.bCode)) > 0); 

另一個好處是Obj類型的對象列表...它具有一個屬性bCode。如何檢查通用列表中的空項目

我想檢查列表中的所有項目是否有「bCode」...不爲空且不爲空。

回答

3
benefits.All(b => !String.IsNullOrEmpty(b.bCode)); 

您可以在MSDN上閱讀Enumerable.All。請注意,它表現出「短路」行爲,如&&(這與它類似)。如果你希望你的測試跑步者,你可以包裝這是Assert.IsTrue

你應該認真考慮將bCode重命名爲BenefitCode,假設它代表它。沒有理由不使用有意義的商業名稱。你的ORM可以處理它。

1

試試這個:

benefits.TrueForAll(P=> !string.IsNullOrEmpty(P.bCode)) 
3
Assert.IsTrue(!benefits.Any(p => string.IsNullOrEmpty(p.bCode))); 
+0

+1代替Any的快捷方式,而不是TrueForAll。 – x0n 2010-12-10 14:51:30

+0

我在這裏找不到'.Any'和'.TrueForAll'之間的任何區別,因爲OP使用'List ',都是+1。 – 2010-12-10 15:08:52

0

如果我理解正確的話,你要保證在benefits沒有bCode屬性爲空或空?你提供的代碼不工作嗎?這個怎麼樣:

Assert.IsTrue(benefits.Where(b => string.IsNullOrEmpty(b.bCode)).Count() == 0); 
0

如果你也想確保每個項目的利益不爲空(這你的問題沒有指定),您可以使用此:

Assert.IsTrue(!benefits.Any(p => p == null || string.IsNullOrEmpty(p.bCode))); 
1

.NET 2.0版本:

List<Obj> findResults = benefits.FindAll((Predicate<string>)delegate(Obj item) 
{ 
    return !string.IsNullOrempty(item.bCode); 
}); 

return findResults.Count == benefits.Count; 
0

小正確使用.Trim() 這將在理想情況下工作,但在下列情況下將不起作用

Assert.I sTrue(!benefits.Any(p => string.IsNullOrEmpty(p.bCode)));

 string[] input = new[] {"A", "", "B"," ", "C", "D"}; 

     int count = input.Count(i => string.IsNullOrEmpty(i)); 

     Console.WriteLine(count); // Result will be 1 now which is incorrect 

使用

 string[] input = new[] {"A", "", "B"," ", "C", "D"}; 

     int count = input.Count(i => string.IsNullOrEmpty(i.Trim())); 

     Console.WriteLine(count); // Result will be 2 now which is correct 

我會建議使用

Assert.IsTrue(!benefits.Any(P => string.IsNullOrEmpty(p.bCode.Trim()) )); //爲獲得更好效果

相關問題