如何在 Umbraco Collection 上申请 Where 条件
How to apply Where condition on Umbraco Collection
我想在 Umbraco 集合上应用 where 条件。
代码:
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))
但我总是在没有过滤的情况下获取数据。
ProductImage 是媒体选择器
所以我猜您想做的是从 workcollection 中获取具有填充 projectImage 的项目 属性?
我个人喜欢用 lambda 表达式来做这件事,在你的情况下它会像这样
workCollection.Where(x => x.HasValue("productImage"))
而不是
workCollection.Where("productImage!=\"\"")
如果你想坚持使用动态对象,你应该尝试:
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)) { ... }
就个人而言,我更喜欢处理强类型对象,所以另一种解决方案可能是:
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)) { ... }
更多信息请查看:https://our.umbraco.org/documentation/reference/templating/mvc/querying。
您还可以查看名为 Umbraco Core 属性 Value Converters: https://our.umbraco.org/projects/developer-tools/umbraco-core-property-value-converters/ 的包,它会自动将一些数据类型值转换为易于访问的对象/列表等。媒体选择器值作为 IPublishedContent 模型返回,您可以直接从返回值访问它的属性。
我想在 Umbraco 集合上应用 where 条件。
代码:
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))
但我总是在没有过滤的情况下获取数据。
ProductImage 是媒体选择器
所以我猜您想做的是从 workcollection 中获取具有填充 projectImage 的项目 属性?
我个人喜欢用 lambda 表达式来做这件事,在你的情况下它会像这样
workCollection.Where(x => x.HasValue("productImage"))
而不是
workCollection.Where("productImage!=\"\"")
如果你想坚持使用动态对象,你应该尝试:
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)) { ... }
就个人而言,我更喜欢处理强类型对象,所以另一种解决方案可能是:
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)) { ... }
更多信息请查看:https://our.umbraco.org/documentation/reference/templating/mvc/querying。
您还可以查看名为 Umbraco Core 属性 Value Converters: https://our.umbraco.org/projects/developer-tools/umbraco-core-property-value-converters/ 的包,它会自动将一些数据类型值转换为易于访问的对象/列表等。媒体选择器值作为 IPublishedContent 模型返回,您可以直接从返回值访问它的属性。