在kentico中获取下面文档的标准方法(我认为它基于ObjectQuery并具有linq命令)。我试图通过一个字段来过滤它" newsCategory"其中包含" 1 | 2 | 3"等数据。所以我不能添加.Search(" newsCategory",1)等,因为我需要先拆分列表才能搜索它。我应该朝哪个方向看?选择子查询? (我是linq的新手)
onCreateView
答案 0 :(得分:1)
就这是耦合表中的字段而言,您无法通过属性访问它,但必须使用GetValue()
。一旦你有了,你可以像使用常规字符串一样使用它:
var news = DocumentHelper.GetDocuments("CMS.News")
.OnSite("CorporateSite")
.Path("/News", PathTypeEnum.Children)
.Culture("en-us")
.CombineWithDefaultCulture(false)
.Where(d => d.GetStringValue("newsCategory","").Split('|').Contains("1"));
答案 1 :(得分:0)
您确定您的数据是1 | 2 | 3而不是1 | 2 | 3 |或| 1 | 2 | 3?
如果是,您可以.Where("NewsCategory", QueryOperator.Like, "%" + id + "|%")
否则你可能需要取回更多结果,然后循环遍历它们并拆分值以找到你想要的结果。
答案 2 :(得分:0)
编辑:查看this article,其中显示了一些可以与数据查询API一起使用的更高级命令。您应该能够使用这些选项为MacGyver添加适当的过滤器。
我相信你正在寻找:
.WhereLike("DocumentCategoryID", "CategoryID");
//OR
.WhereLike("DocumentCategory","CategoryName");
我没有安装v8来仔细检查要过滤的确切键/值对,但根据this Document Query API article,您使用WhereLike()方法过滤文档集。
击>
根据API documentation,GetDocuments()返回MultiDocumentQuery
object。我不是100%确定是否实现了IEnumerable
,所以你甚至可能无法使用LINQ。
答案 3 :(得分:-1)
我相信这样的事情会起作用。有一个属性,应该能够拉出价值。不完全确定它如何处理拥有1然后是11的情况,但它可能正在研究中。
// Get documents
var news = DocumentHelper.GetDocuments("CMS.News")
.OnSite("CorporateSite")
.Path("/News", PathTypeEnum.Children)
.Culture("en-us")
.CombineWithDefaultCulture(false)
.WhereIn("NewsCategory",1);