0

私は C# ASP.NET を初めて使用し、ストア (EPiServer) からアイテムを取得しようとしています。

ビジュアルスタジオ 言う

シンボル Where、OnderzoekId、および ToList を解決できません

私は何を間違っていますか?私はこのコード例を使用しました:

[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>();
    }
}
4

2 に答える 2

2

linq ステートメント

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

コレクションを列挙しようとしていますが、GetStore() メソッドは 1 つのアイテムを返します。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();
}

次の拡張メソッドをソリューションに追加すると、厳密に型指定された Find メソッドを使用できます。これは上記よりも効率的で、すべてのアイテムを返し、linq Where() メソッドを使用してメモリ内でフィルター処理します。

于 2013-04-18T15:26:33.097 に答える
0

次のコードを使用して動作させました。また、AutomaticallyCreateStore 属性と AutomaticRemapStore 属性も削除しました。

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();
}
于 2013-04-19T12:17:42.900 に答える