2013-04-18 41 views
0

我是C#ASP.NET的新手,我試圖從商店(EPiServer)獲取項目。無法通過查詢從DDS獲取項目LINQ

Visual Studio中說

無法解析符號在哪裏,OnderzoekId和ToList

我在做什麼錯?我用這個code example

[EPiServerDataStore(AutomaticallyCreateStore = true, AutomaticallyRemapStore = true)] 
public class OnderzoekColumn 
{ 
    private static int Counter = 0; 
    public Identity Id { get; set; } 
    public int ColumnId { get; set; } 
    public int OnderzoekId { get; set; } 
    public string ColumnName { get; set; } 

    public OnderzoekColumn() 
    { 
     Initialize(); 
    } 

    public OnderzoekColumn(int onderzoekId, string columnName) 
    { 
     Initialize(); 

     OnderzoekId = onderzoekId; 
     ColumnName = columnName; 
    } 

    protected void Initialize() 
    { 
     Id = Identity.NewIdentity(Guid.NewGuid()); 
     ColumnId = System.Threading.Interlocked.Increment(ref Counter); 
     OnderzoekId = 0; 
     ColumnName = string.Empty; 
    } 

    public static List<OnderzoekColumn> GetOnderzoekColumns(int onderzoekId) 
    { 
     var store = typeof(OnderzoekColumn).GetStore(); 

     var columns = from c in store 
         where c.OnderzoekId == onderzoekId 
         select c; 

     if (columns == null) 
     { 
      return new List<OnderzoekColumn>(); 
     } 

     return columns.ToList<OnderzoekColumn>(); 
    } 
} 
+0

'GetStore'做了什麼? – Arran

+0

由於該類使用EPiServerDataStoreAttribute修飾,並且AutomaticallyCreateStore屬性設置爲true,因此對GetStore的調用將自動觸發商店創建。 – user2132291

回答

2

LINQ的聲明

var columns = from c in store 
       where c.OnderzoekId == onderzoekId 
       select c; 

試圖枚舉一個集合,但GetStore()方法返回一個項目。嘗試在地方你GetOnderzoekColumns法(其未經測試)使用下面的代碼

public static List<OnderzoekColumn> GetOnderzoekColumns(int onderzoekId) 
{ 
    var store = typeof(OnderzoekColumn).GetStore(); 

    var columns = store.Items<OnderzoekColumn>().Where(c => c.OnderzoekId == onderzoekId); 

    return columns.ToList(); 
} 

我想補充以下extension methods到您的解決方案,那麼你可以使用強類型的查找方法,這將是比更有效返回所有項目,然後使用linq Where()方法在內存中過濾。

+0

我已經嘗試了您的解決方案,但沒有奏效。我刪除了AutomaticallyCreateStore屬性,現在它非常棒! – user2132291

0

我用下面的代碼來使它工作。我也刪除了AutomaticallyCreateStore和AutomaticallyRemapStore屬性。

public static List<OnderzoekColumn> GetOnderzoekColumns(int onderzoekId) 
{ 
var store = DynamicDataStoreFactory.Instance.GetStore(typeof(OnderzoekColumn)); 

var query = from item in store.Items<OnderzoekColumn>() 
      where item.OnderzoekId == onderzoekId 
      select item; 

return query.ToList(); 
}