разбивая Ienumerable на две части - PullRequest
0 голосов
/ 25 февраля 2012

У меня есть коллекция типа IEnumerable.Я хочу показать это так:

a) получить первый элемент из коллекции по дате и показать под заголовком 1 b) отменить оставшуюся коллекцию и показать все оставшиеся элементы под заголовком 2.

то, что я создал

<ul style="list-style-type: none;">
    @{

        var responses = dispute.DisputeTransactions.GetTransactionByLogOnType(((CreditRegistryPrincipal)User).LogOnType);
        var first = responses.OrderBy(dd => dd.TransactionDate).FirstOrDefault();
        responses = responses.OrderByDescending(dd => dd.TransactionDate);
    }
    @if (dispute.Response > 0)
    {
        <h3 style="margin-left: -15px; margin-bottom: 10px;">
            Responses and Feedbacks</h3>
    }
    @foreach (DisputeTransaction dt in responses)
    {
        if (dt.DisputeTransactionId == first.DisputeTransactionId)
        {

            // firstConversation = false;
        <h3 style="margin-bottom: 10px">
            Dispute</h3>
        <ul class="firstConversation" style="margin-left: -15px">
            <div class="dispute-notes">
                @dt.Notes
            </div>

        </ul>

        }
        else
        {
            // responses = responses.SkipWhile(dd => dd.DisputeTransactionId == first.DisputeTransactionId);



        <li class="dispute-item @(user.RegistryID == dt.ReportedById ? "mine" : "their")">
            <div>
                <span class="dispute-writter"><b>@dt.ReportedBy.FullName</b> on @CreditRegistryRepository.FormatDateTime(dt.TransactionDate)
                    wrote:<br />
                </span>
                <div class="dispute-content">
                    <div class="dispute-notes">
                        @dt.Notes
                    </div>

                </div>
            </div>
        </li>
        }
    }
</ul>

, но оно показывает заголовок1 внизу.Как сделать заголовок одним и первым элементом наверху.Пожалуйста, предложите

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Вы всегда можете также пропустить два OrderBy's

var responses = dispute
                    .DisputeTransactions
                    .GetTransactionByLogOnType(((CreditRegistryPrincipal)User).LogOnType)
                    .OrderBy(dd => dd.TransactionDate);
var first = responses.FirstOrDefault();
responses = responses.Skip(1).Reverse();

реверс всегда будет быстрее, чем OrderBy


@{
   var responses = new List<string>() { "1", "2", "3", "4", "5" };
   var first = responses.First();
   var allButOne = responses.Skip(1).Reverse();
}
<h1>@first</h1>
<ul>
   @foreach (var a in allButOne)
   {
      <li>@a</li>
   }
</ul>

enter image description here

0 голосов
/ 25 февраля 2012

Только не используйте его в цикле, так как вы повторяете коллекцию Descending

<ul style="list-style-type: none;">
@{

    var responses = dispute.DisputeTransactions.GetTransactionByLogOnType(((CreditRegistryPrincipal)User).LogOnType);
    var first = responses.OrderBy(dd => dd.TransactionDate).FirstOrDefault();
    responses = responses.OrderByDescending(dd => dd.TransactionDate);
}
@if (dispute.Response > 0)
{
    <h3 style="margin-left: -15px; margin-bottom: 10px;">
        Responses and Feedbacks</h3>
}

<h3 style="margin-bottom: 10px">
   Dispute</h3>
<ul class="firstConversation" style="margin-left: -15px">
    <div class="dispute-notes">
        @dt.Notes
    </div>
</ul>
@foreach (DisputeTransaction dt in responses)
{
    if (dt.DisputeTransactionId != first.DisputeTransactionId)
    {
        // responses = responses.SkipWhile(dd => dd.DisputeTransactionId == first.DisputeTransactionId);



    <li class="dispute-item @(user.RegistryID == dt.ReportedById ? "mine" : "their")">
        <div>
            <span class="dispute-writter"><b>@dt.ReportedBy.FullName</b> on @CreditRegistryRepository.FormatDateTime(dt.TransactionDate)
                wrote:<br />
            </span>
            <div class="dispute-content">
                <div class="dispute-notes">
                    @dt.Notes
                </div>

            </div>
        </div>
    </li>
    }
}

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