我有这个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))
答案 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();
// ...
}