添加where子句

时间:2015-10-26 12:42:28

标签: razor umbraco

我有这个foreach函数,但我需要添加一个where子句。

我在Umbraco中添加了一个名为" show" 如果是

,则为值
"EN"
"SP"
"US"
...

我们说我已经检查了EN和SP。

如果幻灯片现在是可见的,并且字段show是" EN"我只希望幻灯片可见。检查并确认。我怎样才能在我的代码中添加它?

@foreach (var Slider in Umbraco.ContentSingleAtXPath("//HomePage/SliderArea").Children.Where("Visible").OrderBy("CreateDate
desc").Take(4))

1 个答案:

答案 0 :(得分:0)

您拥有的代码使用的是动态,因此您只能使用伪{Lin}扩展名.Where("Visible")。如果使用Typed对象,您会发现操作项目列表要容易得多。

改变这个:

// Returns IPublishedContent as dynamic
Umbraco.ContentSingleAtXPath("//HomePage/SliderArea")

到此:

// Returns fully typed IPublishedContent
Umbraco.TypedContentSingleAtXPath("//HomePage/SliderArea")

然后,您将能够使用Linq的全部功能来执行此操作:

var area = Umbraco.TypedContentSingleAtXPath("//HomePage/SliderArea");

// returns a filtered IEnumerable<IPublishedContent>
var sliders = area.Children.Where(c => c.IsVisible() && c.GetPropertyValue<string>("show") == "EN");

@foreach (IPublishedContent slider in sliders.OrderByDescending(c => c.CreateDate).Take(4))
{
    // You can get the dynamic equivalent of the IPublishedContent like this if you wish:
    dynamic dSlider = slider.AsDynamic();
    // ...
}