在2sxc的代码中使用关系过滤器

时间:2018-07-03 08:05:37

标签: 2sxc

我尝试在代码中使用关系过滤器,我想要一些按区域分组的位置,所以基本上是这样的:

  • 地区1
    • 地址1
    • 地址2
    • 地址3
  • 地区2
    • 地址4
    • 地址5

因此,基本上它应该执行相同的操作,只是会按区域查询。这就是我想出的:

@{
    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不包含过滤器的定义。

那还应该是其他东西吗?

1 个答案:

答案 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。