Linq 在 2sxc 中具有强类型数据

问题描述 投票:0回答:1

这是动态代码中的常见用法:

@foreach(var myData in AsList(App.Data["Data"]))
{
    foreach(var x in AsList(myData.Specifications as object).Where(a => a.toApp)) { ... }
}

但是在输入数据中,这总是会导致一个错误或另一个错误。

@foreach(var myData in App.Data.GetAll<Data>();)
{
    foreach(var x in myData.Specifications).Where(a => a.toApp)) { ... }
}

myData.Specifications 是链接到数据类型 DataSpecs 的实体字段。

如何在强类型代码中正确实现这些实体数据类型?

dotnetnuke 2sxc
1个回答
0
投票

在 RazorTyped 之前,.Specifications 只会返回一个对象。现在您需要返回 ITypedItem 或 IEnumerable,因为您将其命名为复数,所以我假设是后者。

所以尝试一下,

    foreach(var x in myData.Children("Specifications")
      .Where( ... )
    ) 
    { 
      ... 
    }

但是如果不是 1:many,而是 1:1,我希望这里有一个有意义的例子。

您有一个名为“项目”的内容类型。项目中名为 Client 的字段是指向内容类型 Clients 的实体。因此每个项目适用于 1 个客户。现在,客户端内容类型有一个名为“状态”的字段(字符串下拉列表)。所以现在我只想向活跃客户展示项目。

为此,我的位置如下所示:

  .Where(p => p.Child("Client").String("Status") == "active")

如果另一个例子可能有帮助,我还写了几个月前的一篇文章,当时 2sxc 是 v16+,但尚未发展到像 `.GetAll() 这样的新热点。它显示了数据关系并通过使其工作进行迭代,然后使用 .Parents() 来处理多:多关系既有意义又易于理解。

© www.soinside.com 2019 - 2024. All rights reserved.