不能通过查询LINQ从DDS获取项目

本文关键字:DDS 获取 项目 LINQ 查询 不能 | 更新日期: 2023-09-27 18:10:04

我是c# ASP新手。. NET和我试图从商店(EPiServer)获得项目。

Visual Studio显示

无法解析符号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>();
    }
}

不能通过查询LINQ从DDS获取项目

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

我将在您的解决方案中添加以下扩展方法,然后您可以使用强类型Find方法,这将比上面的方法更有效,它返回所有项,然后使用linq Where()方法在内存中进行过滤。

我使用以下代码使其工作。我还删除了automatilycreatestore和automatilyremapstore属性。

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