如果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);
}
答案 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属性时,第二种解决方案是合适的。它看起来像其他答案,就像你在这种情况下可以访问这个,但我把这个例子留作假设。