2017-01-31 115 views
1

這似乎應該很容易。也許是這樣,我只是在推翻它。我有一堆通過DropLink設置類別字段的項目。我想抓住所有匹配其中一個選項的項目。例如,抓取類別=小冊子的所有項目清單。我似乎無法得到Droplink選項的ID與Item本身的Category選項匹配。獲取與Sitecore中的DropLink選項匹配的所有項目

編輯:包含當前代碼的請求。

public List<PoolDownload> Manuals 
     { 
      get 
      { 
       LookupField cat = (LookupField)this.Item.Fields["Category"]; 
       return this.Downloads.Where(i => (i.Item.TemplateID == PoolDownload.TemplateId) && 
             (i.Item.GlassCast<Pdp.Pool.Website.Business.Entities.PoolDownload>().Category.ToString() == cat.TargetID.ToString())) 
             .ToList(); 
      } 
     } 
+1

發佈您的代碼以顯示迄今爲止已嘗試過的內容。 – haliphax

+0

Category屬性的類型是什麼? – DougCouto

+0

@Barbosa Category字段是一個DropLink字段。 – timT

回答

1

我相信問題是你要比較一個Guid.ToString()Sitecore.Data.ID.ToString()。這兩個語句返回不同的值:

var guidToString = Sitecore.Context.Item.ID.Guid.ToString(); 
// "2a6a1d9a-be1d-411b-821a-7e63775280b3" 

var idToString = Sitecore.Context.Item.ID.ToString(); 
// "{2A6A1D9A-BE1D-411B-821A-7E63775280B3}" 

演員的TargetIDGuid還有,你應該是不錯的。在結果

public IEnumerable<IGrouping<Guid, PoolDownload>> Manuals 
{ 
    get 
    { 
     LookupField cat = (LookupField)this.Item.Fields["Category"]; 

     return this.Downloads.Where(i => 
      i.Item.TemplateID == PoolDownload.TemplateId 
      && i.Item.GlassCast<Pdp.Pool.Website.Business.Entities.PoolDownload>().Category.ToString() == cat.TargetID.Guid.ToString()) 
      .GroupBy(i => i.Category); 
    } 
} 

,然後循環:

並回答您的評論你的問題如下有關顯示按類別分組的「下載項目」,您可以使用的GroupBy方法,https://msdn.microsoft.com/en-us/library/bb534304(v=vs.110).aspx這樣在新的Manuals屬性中,您可以這樣做:

foreach(var categoryGroup in Manuals) 
{ 
    var categoryGuid = categoryGroup.Key; 

    foreach(var download in categoryGroup) 
    { 
     var downloadInCurrentGroup = download.Item; 
    } 
} 
+0

謝謝,@Barbosa!這有助於我匹配身份證件。任何想法如何獲取我正在測試的選項的ID? – timT

+0

沒問題。 你在哪裏設置你正在測試的選項?它是否在你的代碼中被硬編碼?它是頁面項目上的一個字段嗎?它是數據源項目上的字段嗎?內容作者如何選擇一個類別開始? – DougCouto

+0

我有「下載項目」,其中有內容作者用來設置類別的droplink字段。這些是我想測試的選項(手冊,小冊子等)。下載項目通過產品模板上的下載字段與產品項目相關聯。產品可以有多個與之關聯的下載項目。我試圖最終做的是顯示產品的所有下載項目,按其類別分組。 – timT