如何申请Umbraco Collection的Where条件

Ubi*_*ers 6 umbraco where umbraco7

我想申请Umbraco Collection的条件.

码:

var workList = CurrentPage.work.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
var workCollection = Umbraco.Content(workList);
@foreach (var item in workCollection.Where("productImage!=\"\"").Skip((i - 1) * iterationCount).Take(iterationCount))
Run Code Online (Sandbox Code Playgroud)

但我总是得到没有过滤器的数据.
ProductImage是媒体选择器 在此输入图像描述 在此输入图像描述

Mar*_*ski 1

如果你想坚持动态对象,你应该尝试:

var workList = CurrentPage.work.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
var workCollection = Umbraco.Content(workList);
@foreach (var item in workCollection.Where("productImage != null && productImage != string.Empty").Skip((i - 1) * iterationCount).Take(iterationCount)) { ... }
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我更喜欢处理强类型对象,因此另一种解决方案可能是:

var workList = CurrentPage.work.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
var workCollection = Umbraco.TypedContent(workList);
@foreach (IPublishedContent item in workCollection.Where(x => x.HasValue("productImage")).Skip((i - 1) * iterationCount).Take(iterationCount)) { ... }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请检查:https://our.umbraco.org/documentation/reference/templated/mvc/querying

您还可以检查一个名为Umbraco Core Property Value Converters 的包: https: //our.umbraco.org/projects/developer-tools/umbraco-core-property-value-converters/它会自动将一些数据类型值转换为易于访问的值对象/列表等。例如,媒体选择器值作为IPublishedContent模型返回,您可以直接从返回值访问它的属性。