我正在尝试通过自定义字段值定位特定项目。到目前为止,这是我发现的最好的方法:
var targetProjectId = "some_external_reference_ID";
var projIdCustomFieldUid = GetCustomFieldUidByName("ExternalProjectId");
var projectList = base.ProjectClient.ReadProjectList();
foreach (ProjectDataSet.ProjectRow projRow in projectList.Project.Rows)
{
var fullProj = base.ProjectClient.ReadProject(projRow.PROJ_UID, DataStoreEnum.WorkingStore);
if (fullProj != null)
{
var cf = fullProj.ProjectCustomFields.Where(x => x.MD_PROP_UID == projIdCustomFieldUid && x.TEXT_VALUE == targetProjectId ).FirstOrDefault();
if (cf != null)
{
return fullProj;
}
}
}
return null;
}
可以想象,遍历所有项目并加载每个项目以检查自定义字段值是非常缓慢和丑陋的。我需要尽快通过自定义字段值识别 PROJ_UID,因此:
有没有办法在不加载整个项目的情况下获取自定义字段值?