我会在这里使用if语句还是bool?

时间:2009-06-10 20:12:42

标签: c#

如果results确实找到了什么,我需要找出一种方法来展示 “是的,发现了一些东西”,否则显示“此时没有找到任何用户”。我试图解决这个问题,但我无法做到这一点。谢谢你的时间。

我的代码如下:

DateTime dt = DateTime.Today;
DateTime less5dt = dt.AddDays(-5);
This.cmb1.Items.Clear();

PrincipalSearchResult results =
UserPrincipal.FindByLockoutTime(
     adPrincipalContext,
         dt,
          MatchType.GreaterThanOrEquals);

foreach (Principal result in results)
{
    cmb1.Items.Add(result.name);
}

6 个答案:

答案 0 :(得分:7)

您可以检查结果的长度。如果它为零,那么做一件事,如果它大于零则做另一件事。

答案 1 :(得分:4)

如果PrincipalSearchResult class上的MSDN文章正确无误,则会显示Count属性。


if (results.Count > 0)
{
    foreach (Principal result in results)
    {
        cmb1.Items.Add(result.name);
    }
}
else
{
    // Hide contorls and/or show message
}

答案 2 :(得分:1)

你应该做这样的事情

DateTime dt = DateTime.Today;
DateTime less5dt = dt.AddDays(-5);

PrincipalSearchResult results = UserPrincipal.FindByLockoutTime(
    adPrincipalContext,
    dt,
    MatchType.GreaterThanOrEquals);

if (results.Count > 0)
{
    This.cmb1.Items.Clear();
    foreach (Principal result in results)
    {
        cmb1.Items.Add(result.name);
    }   
}
else
{
    //Considering you have a label called lblMessage
    lblMessage.Text = "no users have been found at this time"
    cmb1.Visible = false;
}

答案 3 :(得分:0)

您可以为您的班级添加计数/长度成员。

答案 4 :(得分:-1)

if (!results.OfType<Principal>().Any())
{
  //code when nothing is found, here
}

我使用了OfType,因为我不知道你的集合是否实现了IEnumerable<Principal>,但我敢打赌它实现了IEnumerable

如果您已经拥有Count属性,那么检查它当然会“更快”。明显更快?嗯。你付钱让这个Count属性保持最新......

答案 5 :(得分:-2)

因为你无论如何都在循环结果,所以在顶部引入一个布尔值根本不会伤害你:

bool hasResults = false;
foreach (Principal result in results)
{
    hasResults = true;
    cmb1.Items.Add(result.name);
}
if (hasResults)
{
    return "yes, something was found";
}
else
{
    return "no users have been found at this time";
}

此代码可以缩短,但可读性应该优先。

如果你不需要循环(我知道你需要基于你发布的代码),你可以将结果短路并排除布尔:

foreach (Principal result in results)
{
    return "yes, something was found";
}
return "no users have been found at this time";

当您无法访问可枚举类的Count属性时,第二种解决方案是合适的。它看起来像其他答案,就像你在这种情况下可以访问这个,但我把这个例子留作假设。