我目前正在一个项目中,该项目是从活动目录加载数据的。然后将数据放入几个字段中,并生成一个文件。但是,并非始终会填写活动目录中的所有字段,有时它们可能为空。但是,我仍然需要它向正在生成的数据列表中添加一些内容,以便可以告诉表单要删除的字段。
我正在下面进行操作,但是没有将N/A
添加到我的列表中。我尝试四处搜寻,但发现的一个答案不适用于这种情况。
public List<String> SearchAD(String key)
{
List<String> data = new List<string>();
DirectoryEntry dEntry = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(dEntry);
search.Filter = "(mailnickname=" + key + ")";
string[] requiredProperties = new string[] { "****"};
foreach (String property in requiredProperties)
search.PropertiesToLoad.Add(property);
SearchResult results = search.FindOne();
if (results != null)
{
foreach (String property in requiredProperties)
{
foreach (Object myCollection in results.Properties[property])
if (myCollection.ToString() == null)
data.Add("N/A");
else
data.Add(myCollection.ToString());
}
}
return data;
}
答案 0 :(得分:2)
由于您提到您的代码可以正常运行,所以我猜测如果results.Properties[property]
不存在,property
将返回一个空集合,因此这些属性将被完全跳过(我可以错了)。
如果是这种情况,那么我认为这里的问题是我们需要首先检查集合中是否包含property
。如果不是,则添加"N/A"
,否则添加值:
foreach (String property in requiredProperties)
{
if (results.Properties.Contains(property))
{
foreach (Object myCollection in results.Properties[property])
{
data.Add(myCollection.ToString());
}
}
else
{
data.Add("N/A");
}
}