我尝试在代码中使用关系过滤器,我想要一些按区域分组的位置,所以基本上是这样的:
因此,基本上它应该执行相同的操作,只是会按区域查询。这就是我想出的:
@{
var someAddresses = App.Query["FilterAddresses"]["ListContent"];
someAddresses.Filter = region.RegionName;
Data.In.Add("someAddresses", someAddresses["Default"]);
}
@foreach (var pc in AsDynamic(someAddresses.List)) {
<li>@pc.Naam</li>
}
但是它说:
CS1061:ToSic.Eav.DataSources.IDataStream不包含过滤器的定义。
那还应该是其他东西吗?
答案 0 :(得分:1)
您不会给我们很多代码来帮助您...
这是对我有用的,但它不是基于查询的。但是,它应该可以工作:
@{
var organismes = (IEnumerable<dynamic>)AsDynamic(App.Data["Organismes"])
.Where(m => (m.Montrer == true ));
var groupements = organismes
.OrderBy(n => n.Nom)
.GroupBy(i => i.Nom.Substring(0, 1).ToUpper());
}
@foreach (var grp in groupements)
{
<strong>@grp.Nom</strong>
<ul>
@foreach (var term in grp)
{
<li>@var.Nom</li>
}
</ul>
}
您可能会有类似的东西:
@{
var someAddresses = (IEnumerable<dynamic>)AsDynamic(App.Query["FilterAddresses"]["ListContent"]);
var groupedAddresses = someAddresses
.GroupBy(r => r.Region);
}
@foreach (var region in groupedAddresses)
{
<strong>@region.Name</strong> //Name of the region, adapt to the real variable
<ul>
@foreach (var address in region)
{
<li>@address.Street, @address.City(@address.Zip)</li> // each field for each address in each region
}
</ul>
}
更新:在第二个对象上使用GroupBy。