Попытка получить строку вне оператора LINQ .SelectMany - PullRequest
0 голосов
/ 22 июня 2019

У меня есть решение, где мне нужно сделать календарь для артистов на фестивале.Я нашел способ сортировки их по .SelectMany().OrderBy().ThenBy().ThenBy()

Теперь мне нужно выйти из цикла (ItemPublisher:Item.WhenAndWhere) в LINQ, чтобы получить строку ItemPublisher:Item.Title.

Любая идея о том, как яможет сделать это в том же операторе LINQ.

@inherits Dynamicweb.Rendering.RazorTemplateBase <     
Dynamicweb.Rendering.RazorTemplateModel < Dynamicweb.Rendering.Template >>

@using System;
@using System.Collections.Generic;
@using System.Linq;

@{
    var lastDay = "";
    var currentDay = "";

    var lastVenue = "";
    var currentVenue = "";

    var items = GetLoop("ItemPublisher:Items.List")
    .SelectMany(item => item.GetLoop("ItemPublisher:Item.WhenAndWhere"))
    .OrderBy(item => item.GetDate("ItemPublisher:Item.WhenAndWhere.Date"))
    .ThenBy(item => item.GetString("ItemPublisher:Item.WhenAndWhere.Where"))
    .ThenBy(item => item.GetString("ItemPublisher:Item.Title"))
    .Select(item => new{
    day = item.GetDate("ItemPublisher:Item.WhenAndWhere.Date").ToString("dddd"),
    where = item.GetString("ItemPublisher:Item.WhenAndWhere.Where"),
    title = item.GetString("ItemPublisher:Item.Title")
    });

}

<div class="grid">
  <div class="grid__col-md-12 ">

      @foreach(var item in items) {

        var title = item.title;

        if(lastDay != item.day)
        {
            <h1 class="day u-margin-top--lg u-no-margin">@item.day</h1>
            lastDay = item.day;
        }
        if(lastVenue != item.where)
        {
            <h2 class="day u-no-margin">@item.where</h2>
            lastVenue = item.where;
        }

        <p>@item.title</p>

      }

  </div>
</div>

1 Ответ

0 голосов
/ 22 июня 2019

Я понял, работает с кодом ниже.

@{
var lastDay = "";
var currentDay = "";

var lastVenue = "";
var currentVenue = "";

var items = GetLoop("ItemPublisher:Items.List")
.SelectMany(item => item.GetLoop("ItemPublisher:Item.WhenAndWhere")

.Select(artist => new{
    day = artist.GetDate("ItemPublisher:Item.WhenAndWhere.Date").ToString("dddd"),
    where = artist.GetString("ItemPublisher:Item.WhenAndWhere.Where"),
    title = item.GetString("ItemPublisher:Item.Title")
}))

.OrderBy(item => item.day)
.ThenBy(item => item.where)
.ThenBy(item => item.title);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...