カスタム フィールド値で特定のプロジェクトを見つけようとしています。これまでのところ、これは私が見つけた最良の方法です:
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 をできるだけ早く識別する必要があります。
プロジェクト全体をロードせずにカスタム フィールドの値を取得する方法はありますか?