如何检查通用列表中的空项

时间:2010-12-10 14:44:55

标签: c# list generics

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

HEre的好处是Obj类型的对象列表...它有一个属性bCode。

我想检查列表中的所有项目是否都有“bCode”...不为空且不为空。

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

您可以在MSDN上阅读Enumerable.All。请注意,它表现出像&&这样的“短路”行为(这与它类似)。如果你想要你的测试运行员,你可以将它包装在Assert.IsTrue中。

您应该认真考虑将bCode重命名为BenefitCode,假设它代表的是它。没有理由不使用有意义的商业名称。你的ORM可以处理它。

答案 2 :(得分:1)

试试这个:

benefits.TrueForAll(P=> !string.IsNullOrEmpty(P.bCode))

答案 3 :(得分:1)

.net 2.0版本:

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

return findResults.Count == benefits.Count;

答案 4 :(得分:0)

如果我理解正确,您希望确保bCode中的benefits属性为空或空?您提供的代码不起作用吗?怎么样:

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

答案 5 :(得分:0)

如果您还想确保每个福利项目都不为空(您的问题没有指明),您可以使用:

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

答案 6 :(得分:0)

小正确使用.Trim() 这将在理想的情况下工作,但在以下情况下它将无法正常工作

  

Assert.IsTrue(!benefits.Any(p =&gt;   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 =&gt; string.IsNullOrEmpty(p.bCode.Trim()))); //为了更好的结果