【发布时间】:2016-02-03 11:38:03
【问题描述】:
我有一个名为 blogCategoriesList 的列表(它是字符串类型),当它通过检查类别下拉属性中定义的值来循环遍历每个页面时,该列表填充了每个博客类别的值。因此,如果我的网站上有三篇博客文章,并且类别被定义为足球、飞镖、飞镖,那么这就是列表将包含的内容。
我正在尝试做一个 if 检查来验证是否
- 列表中包含的值与 当前页面
- 列表包含多个与 当前页面的类别
例子
blogCategoriesList = 足球、飞镖、飞镖
如果我在一个将类别设置为飞镖的页面上,那么 if 测试应该通过,因为该列表包含飞镖,并且列表中还有多个飞镖条目。
blogCategoriesList = 足球、计算、飞镖
如果我在将类别设置为飞镖的页面上,则 if 测试将失败,因为列表包含飞镖,但列表中的飞镖条目不超过一个。
我一直在尝试使用以下使用 groupby 的代码,但目前正在努力使其正常工作。
@if (blogCategoriesList.Contains(Model.Content.GetPropertyValue("category")) && blogCategoriesList.GroupBy(n => n.Equals(Model.Content.GetPropertyValue("category"))).Any(c => c.Count() > 1))
任何帮助都会很棒
非常感谢
保罗
编辑*所以使用下面的建议我已将我的代码更新为
@if (blogCategoriesList.Contains(@Model.Content.GetPropertyValue("category")) && blogCategoriesList.Where(x => x == @Model.Content.GetPropertyValue("category")).Count() > 1)
@if (blogCategoriesList.Contains(@Model.Content.GetPropertyValue("category")) && blogCategoriesList.Where(x => x == @Model.Content.GetPropertyValue("category")).Skip(1).Any())
但现在我的 if 测试总是失败并且没有意义。当前页面属于类别计算。从我的调试中可以看到,类别列表中的计算值不止一个
【问题讨论】:
-
blogCategoriesList.Where(c => c == category).Count() > 1? -
blogCategoriesList.Where(c => c == category).Skip(1).Any()?无需扫描所有列表即可找出Count(),例如1234567 -
@Paul 查看我的答案的编辑。
-
不需要
Contains()和Count()。如果计数 > 0,则包含逻辑上为真。请检查@Model.Content.GetPropertyValue("category")的实际类型,我怀疑它是object。 -
@CodeCaster 你是绝对正确的。那是一个物体。我将它存储在一个 var (var currentPageCategory = Model.Content.GetPropertyValue("category").ToString();) 中并转换为字符串,它解决了这个问题。感谢大家的帮助。那么我将哪个标记为答案?
标签: c# asp.net-mvc linq razor umbraco