这是动态代码中的常见用法:
@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 的实体字段。
如何在强类型代码中正确实现这些实体数据类型?
在 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() 来处理多:多关系既有意义又易于理解。