首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Razor模板中的"Sequence contains matching element“

Razor模板中的"Sequence contains matching element“
EN

Stack Overflow用户
提问于 2019-10-22 21:52:19
回答 1查看 156关注 0票数 0

我正在尝试修复一个正常工作的网页,但现在不行了。

在该图中,可以看到feiEvt.DefiniteEntriesDate存在并且具有日期值。

但是,当代码到达第95行时,关闭}将失败,并显示异常Sequence contains no matching element

如果我注释掉第91到96行,那么代码将在第90行使用feiEvt.EventTypeCode属性失败,但这也有数据。当'Definite‘部分存在时,执行将通过此行。

编辑:我还注释掉了屏幕截图中的第90行,现在第89行也出现了同样的错误。这引用了一个不同的对象,但是这个值@evt.ClassType也有一个值--这绝对不是空值或缺失值的问题!

我尝试将逻辑拆分成单独的行-获取日期,检查它是否为null,如果不是,将其转换为“ShortDateString”并显示字符串-但错误仍然存在。

我也尝试过(几次!)清理然后构建整个应用程序(这是解决这些奇怪问题的常用解决方案),但还是没有成功。

有什么想法吗?

代码语言:javascript
复制
    @using System
@using System.Activities.Statements
@using System.Collections.Generic
@using System.Linq
@using BeSfClient.DBModels;
@using FEIClient.Data
@using FEIClient.Entry
@using FEIEntryWeb.Helpers
@using SharedUtilities
@model FEIEntryWeb.Models.EntriesModel
@{
    ViewBag.Title = "Entries";
}

@section Scripts {
    <script src="@Scripts.Url("~/scripts/entries.js")"></script>
}

@section featured {
    <section class="featured">
        <div class="content-wrapper">
            @Html.ActionImage("_Entries", "Help",
                new { }, "~/Content/Images/help.png", "Members Help",
                new { @class = "helpLink" })
            <div class="title">
                <h1>@ViewBag.Title - @Model.Season</h1>
                <h2>@ViewBag.Message</h2>
            </div>

        </div>
    </section>
}

@using (Html.BeginForm("Entries", "Events", FormMethod.Post))
{
    @Html.DropDownListFor(i => i.BEMeetings, new SelectList(Model.BEMeetings.OrderBy(m => m.MeetingStartDate), "eventId", "MeetingName"))
    @*<input type="submit" name="action" value="Get Entries" />*@
    <button name="actionButton" value="GetEntries">Get Entries</button>

    @Html.CheckBoxFor(m => m.ShowAll, new { id = "showAll" })
    @Html.LabelFor(m => m.ShowAll, "Show All Events", new { style = "display:inline-block; padding-left: 10px" })


    if (Model.BEMeetings.Count > 0 && !string.IsNullOrWhiteSpace(Model.SelectedMeeting))
    {
        var meeting = Model.BEMeetings.First(m => m.EventId == Model.SelectedMeeting);
        var show = Model.FeiShow;

        <h3>@meeting.MeetingName - @Html.NullableDate(meeting.MeetingStartDate, "dd MMMM, yyyy")</h3>
        <ul>
            <li>Meeting ID: @meeting.EventId</li>
            <li>Venue: @meeting.VenueName</li>
            <li>FEI Show Code: @meeting.FeiShowCode</li>
        </ul>
        <div id="classesAccordion">

            @foreach (var evt in meeting.Classes)
            {
                // Get the entries for this class from the FEI Entries
                EntryListWS feiEvtEntries;
                Event feiEvt;
                List<BEEntry> beClass;
                Dictionary<string, Tuple<BEEntry, EntryAthleteWS>> matchedEntries;

                if (!Model.OrphanedFeiEntries.TryGetValue(evt.ClassId, out feiEvtEntries))
                {
                    feiEvtEntries = new EntryListWS();
                    feiEvtEntries.count = 0;
                    feiEvtEntries.entries = new EntryAthleteWS[] { };
                }

                if (!Model.OrphanedBeEntries.TryGetValue(evt.ClassId, out beClass))
                {
                    beClass = new List<BEEntry>();
                }

                if (!Model.MatchedEntries.TryGetValue(evt.ClassId, out matchedEntries))
                {
                    matchedEntries = new Dictionary<string, Tuple<BEEntry, EntryAthleteWS>>();
                }

                feiEvt = Model.FeiEvents[evt.ClassId];

                <h4>@evt.Description</h4>
                <div>
                    <ul>
                        <li>BE Class ID: @evt.ClassId</li>
                        <li>FEI Event ID: @evt.FeiEventCode</li>
                        <li>BE Event Type: @evt.ClassType</li>
                        <li>FEI Event Type: @feiEvt.EventTypeCode</li>
                        <li>
                            Definite Entries Date: @if (feiEvt.DefiniteEntriesDate != null)
                            {
                                <span>@(((DateTime)feiEvt.DefiniteEntriesDate).ToShortDateString())</span>
                            }
                        </li>
                        <li>
                            Open for Entry? <img src="~/Images/icons/fugue/icons/@((show.Events.First(e => e.EventCode == evt.FeiEventCode).OpenForEntries ?? false) ? "tick.png" : "cross.png")"
                                                 class="tooltip" title="Event Open For Entry?" />
                        </li>
                        <li>
                            Event History:
                            @{
                                var successResults = new[] { Results.SUCCESS, Results.OKD, Results.OKS };

                                if (evt.EventActions.Any(a => successResults.Contains(a.ActionResult)))
                                {
                                    @Html.ActionImage("ClassDetailsHistory",
                                        new { classId = evt.ClassId },
                                        "~/images/icons/aha/info.png", "Validated successfully",
                                        new { @class = "actionDetails" })
                                }
                                else if (evt.EventActions.Any())
                                {
                                    @Html.ActionImage("ClassDetailsHistory",
                                        new { classId = evt.ClassId },
                                        "~/images/icons/aha/warning.png", "Validated with errors",
                                        new { @class = "actionDetails" })
                                }
                                else
                                {
                                    @:No history recorded for this event
                                }
                            }
                        </li>
                    </ul>

                    <div class="entriesList">
                        <h4>Matched Entries</h4>

                        @if (matchedEntries.Count == 0)
                        {
                            <p>No Riders or Horses from British Eventing have been entered into this event yet.</p>
                        }
                        else
                        {
                            <div>
                                <button name="actionButton" value="ValidateList_@evt.ClassId" style="float:right">Validate Entry List</button>

                                <img src="~/Images/icons/aha/Filter.png" />:&nbsp;
                                <span class="customFilter gbrOnly" id="MatchedGbrOnly_@evt.ClassId"><img src="~/Images/icons/flags/GB.png" class="tooltip" title="GBR Only" /></span> |
                                <span class="customFilter notGbr" id="MatchedNotGbr_@evt.ClassId"><img src="~/Images/icons/flags/Not-GB.png" class="tooltip" title="Not GBR" /></span> |
                                <span class="customFilter allResults" id="MatchedAll_@evt.ClassId"><img src="~/Images/icons/fugue/icons/globe-green.png" class="tooltip" title="Everyone" /></span>

                                <table id="matchedEntriesTable_@evt.ClassId" class="entries dataTable">
                                    <thead>
                                        <tr>
                                            <th>Rider Name</th>
                                            <th>Rider FEI</th>
                                            <th>NF</th>
                                            <th>Horse Name</th>
                                            <th>Horse FEI</th>
                                            <th>Fei Status</th>
                                            <th class="enter">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        @foreach (var entry in matchedEntries)
                                        {
                                            var beEntry = entry.Value.Item1;
                                            var feiEntry = entry.Value.Item2;
                                            var feiHorse = feiEntry.horses.FirstOrDefault(h => h.fei_id.Trim().Equals(beEntry.HorseFEI.Trim(), StringComparison.InvariantCultureIgnoreCase));

                                            var athleteNamesMatches = Model.CheckBeAndFeiAthleteNamesMatch(beEntry, feiEntry);
                                            var horseNameMatches = Model.CheckBeAndFeiHorseNamesMatch(beEntry, feiHorse);

                                            <tr>
                                                <td @if (!athleteNamesMatches) { @: class="error"
                                                    }>
                                                    @if (!athleteNamesMatches)
                                                    {
                                                        <span class="tooltip" title="@String.Format("{0} {1}", feiEntry.firstname, feiEntry.familyname)">@beEntry.RiderFirstName @beEntry.RiderFamilyName</span>
                                                        <!-- FEI: @feiEntry.firstname @feiEntry.familyname BE: @beEntry.RiderFirstName @beEntry.RiderFamilyName -->
                                                    }
                                                    else
                                                    {
                                                        @String.Format("{0} {1}", beEntry.RiderFirstName, beEntry.RiderName)
                                                    }
                                                </td>
                                                <td>
                                                   @Html.SalesforceLink(beEntry.RiderId, beEntry.RiderFEI)
                                                </td>

                                                <td>@beEntry.RiderNationality</td>
                                                <td @if (!horseNameMatches) { @: class="error"
                                                    }>
                                                    @if (!horseNameMatches)
                                                    {
                                                        <span class="tooltip" title="@feiHorse.name">@beEntry.HorseName</span>
                                                    }
                                                    else
                                                    {
                                                        @beEntry.HorseName
                                                    }
                                                </td>
                                                <td>
                                                    @Html.SalesforceLink(beEntry.HorseId, beEntry.HorseFEI)
                                                </td>

                                                <td>@feiEntry.status</td>
                                                <td class="enter">
                                                    <img src="~/images/icons/silk/delete.png" alt="Withdraw Entry"
                                                         id="Withdraw_@(beEntry.ClassId + "_" + @beEntry.EntryId)"
                                                         class="action" />
                                                    @if (beEntry.EntryActions.Any(a => a.ActionResult != Results.SUCCESS && a.ActionResult != Results.ATH_ALREADY_ENTERED))
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = beEntry.ClassId, entryId = beEntry.EntryId },
                                                            "~/images/icons/aha/warning.png", "Entered with errors",
                                                            new { @class = "actionDetails tooltip" })
                                                        ;
                                                    }
                                                    else if (beEntry.EntryActions.Any())
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = beEntry.ClassId, entryId = beEntry.EntryId },
                                                            "~/images/icons/aha/info.png", "Entered successfully",
                                                                 new { @class = "actionDetails tooltip" })
                                                        ;
                                                    }
                                                </td>
                                            </tr>
                                        }
                                    </tbody>
                                </table>
                            </div>
                        }

                        <h4>BE Entries</h4>
                        @if (beClass.Count > 0)
                        {
                            <div>
                                @*<input type="submit" value="Enter Selected Riders/Horses" name="ActionEnter_@evt.ClassId" style="float:right" />*@
                                <img src="~/Images/icons/aha/Filter.png" />:&nbsp;

                                <span class="customFilter gbrOnly" id="BeGbrOnly_@evt.ClassId"><img src="~/Images/icons/flags/GB.png" class="tooltip" title="GBR Only" /></span> |
                                <span class="customFilter notGbr" id="BeNotGbr_@evt.ClassId"><img src="~/Images/icons/flags/Not-GB.png" class="tooltip" title="Not GBR" /></span> |
                                <span class="customFilter validOnly" id="BeValidOnly_@evt.ClassId"><img src="~/Images/icons/fugue/icons/tick-button.png" class="tooltip" title="Valid Entries Only" /></span> |
                                <span class="customFilter feiPerson" id="BeFeiPerson_@evt.ClassId"><img src="~/Images/icons/misc/PersonInvalid.png" class="tooltip" title="Rider FEI Membership Issues" /></span> |
                                <span class="customFilter feiHorse" id="BeFeiHorse_@evt.ClassId"><img src="~/Images/icons/misc/HorseInvalid.png" class="tooltip" title="Horse FEI Membership Issues" /></span> |
                                <span class="customFilter allResults" id="BeAll_@evt.ClassId"><img src="~/Images/icons/fugue/icons/globe-green.png" class="tooltip" title="Everyone" /></span>

                                <button name="actionButton" value="ActionEnter_@evt.ClassId" style="float: right">Enter Selected Riders/Horses</button>

                                <table id="beEntriesTable_@evt.ClassId" class="entries dataTable">
                                    <thead>
                                        <tr>
                                            <th>Rider Name</th>
                                            <th>Rider FEI</th>
                                            <th>NF</th>
                                            <th>Horse Name</th>
                                            <th>Horse FEI</th>
                                            <th>BE Entry ID</th>
                                            <th class="enter">Enter<br />@Html.CheckBox("Enter_All_" + @evt.ClassId)</th>
                                        </tr>
                                    </thead>

                                    <tbody>
                                        @foreach (var entry in beClass)
                                        {
                                            var validForEntry = (!String.IsNullOrWhiteSpace(entry.RiderFEI)
                                                                 && !String.IsNullOrWhiteSpace(entry.HorseFEI)
                                                                 && !String.IsNullOrWhiteSpace(entry.RiderNationality)
                                                                 && entry.RiderNationality.Trim().Equals("GBR", StringComparison.InvariantCultureIgnoreCase)
                                                                 && entry.RiderFeiValid
                                                                 && entry.HorseFeiValid) ? "valid" : "";
                                            var feiAthleteMembership = (entry.RiderFeiValid) ? "" : "invalid";
                                            var feiHorseMembership = (entry.HorseFeiValid) ? "" : "invalid";
                                            <tr>
                                                <td>
                                                    @entry.RiderFirstName, @entry.RiderName
                                                </td>
                                                <td data-search="@feiAthleteMembership">
                                                    @if (!entry.RiderFeiValid)
                                                    {
                                                        <img src="~/images/icons/fugue/icons/cross-small.png" style="float: right; clear: right"
                                                             class="tooltip" title="No current FEI Membership" />
                                                    }
                                                    @Html.SalesforceLink(entry.RiderId, entry.RiderFEI)
                                                </td>
                                                <td>@entry.RiderNationality</td>
                                                <td>
                                                    @entry.HorseName
                                                </td>
                                                <td data-search="@feiHorseMembership" style="vertical-align: middle">
                                                    @if (!entry.HorseFeiValid)
                                                    {
                                                        <img src="~/images/icons/fugue/icons/cross-small.png" style="float: right"
                                                             class="tooltip" title="No current FEI Membership" />
                                                    }
                                                    @Html.SalesforceLink(entry.HorseId, entry.HorseFEI)
                                                </td>
                                                <td>@entry.EntryId</td>
                                                <td class="enter" data-search="@validForEntry">
                                                    @if (!String.IsNullOrWhiteSpace(validForEntry))
                                                    {
                                                        @Html.CheckBoxSimple("Enter_" + @evt.ClassId + "_" + entry.EntryId, new { })
                                                    }
                                                    @if (entry.EntryActions.Any(a => a.ActionResult != Results.SUCCESS && a.ActionResult != Results.ATH_ALREADY_ENTERED))
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = entry.ClassId, entryId = entry.EntryId },
                                                            "~/images/icons/aha/warning.png", "Entered with errors",
                                                            new { @class = "actionDetails" })
                                                    }
                                                    else if (entry.EntryActions.Any())
                                                    {
                                                        @Html.ActionImage("EntryDetailsHistory",
                                                            new { classId = entry.ClassId, entryId = entry.EntryId },
                                                            "~/images/icons/aha/info.png", "Entered successfully",
                                                            new { @class = "actionDetails" })
                                                    }
                                                    @Html.ActionImage("EditEntry",
                                                            new { classId = entry.ClassId, entryId = entry.EntryId },
                                                            "~/images/icons/silk/cog_edit.png", "Edit FEI Details",
                                                         new { @class = "actionDetails tooltip" })
                                                </td>
                                            </tr>
                                        }
                                    </tbody>
                                </table>

                            </div>
                        }
                        else
                        {
                            <p>No BE Entries in database, or all have been entered into FEI Database (see Matched Entries above)</p>
                        }

                        <h4>FEI Entries</h4>
                        @if (feiEvtEntries.entries.Length > 0)
                        {
                            if (feiEvtEntries.entries.Length == 1 && feiEvtEntries.entries[0].fei_id == 0)
                            {
                                <p>Event not open for entries.</p>
                            }
                            else
                            {
                                <div>
                                    <img src="~/Images/icons/aha/Filter.png" />:&nbsp;
                                    <span class="customFilter gbrOnly" id="FeiGbrOnly_@evt.ClassId"><img src="~/Images/icons/flags/GB.png" class="tooltip" title="GBR Only" /></span> |
                                    <span class="customFilter notGbr" id="FeiNotGbr_@evt.ClassId"><img src="~/Images/icons/flags/Not-GB.png" class="tooltip" title="Not GBR" /></span> |
                                    <span class="customFilter allResults" id="FeiAll_@evt.ClassId"><img src="~/Images/icons/fugue/icons/globe-green.png" class="tooltip" title="Everyone" /></span>
                                    <table id="feiEntriesTable_@evt.ClassId" class="entries dataTable">
                                        <thead>
                                            <tr>
                                                <th>Rider Name</th>
                                                <th>Rider FEI</th>
                                                <th>NF</th>
                                                <th>Horse Name</th>
                                                <th>Horse FEI</th>
                                                <th>Fei Status</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            @foreach (var entry in feiEvtEntries.entries.ToList())
                                            {
                                                foreach (var horse in entry.horses.ToList())
                                                {
                                                    <tr>
                                                        <td>@entry.firstname @entry.familyname</td>
                                                        <td>@entry.fei_id</td>
                                                        <td>@entry.competing_for_nf</td>
                                                        <td>@horse.name</td>
                                                        <td>@horse.fei_id</td>
                                                        <td>@horse.status</td>
                                                    </tr>
                                                }
                                            }
                                        </tbody>
                                    </table>
                                </div>
                            }
                        }
                        else
                        {
                            <p>No entries recorded with FEI yet</p>
                        }
                    </div>
                </div>
            }
        </div>
    }
    else
    {
        <p>Select a Meeting to view its Entries</p>
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-29 05:54:55

可能有点晚了,但我找到了解决方案,所以在这里发帖给其他有这个问题的人。

问题是,因为@wiktorZychla与'First()‘的使用有关,但还有更多的原因。这是原始代码:

代码语言:javascript
复制
                <li>
                    Definite Entries Date: @if (feiEvt.DefiniteEntriesDate != null)
                    {
                        <span>@(((DateTime)feiEvt.DefiniteEntriesDate).ToShortDateString())</span>
                    }
                </li>
                <li>
                    Open for Entry? <img src="~/Images/icons/fugue/icons/@((show.Events.First(e => e.EventCode == evt.FeiEventCode).OpenForEntries ?? false) ? "tick.png" : "cross.png")"
                                         class="tooltip" title="Event Open For Entry?" />
                </li> 

尽管在语句中报告了异常

代码语言:javascript
复制
@(((DateTime)feiEvt.DefiniteEntriesDate).ToShortDateString())

异常实际上发生在以下代码行中:

代码语言:javascript
复制
@((show.Events.First(e => e.EventCode == evt.FeiEventCode).OpenForEntries ?? false) ? "tick.png" : "cross.png")

我更改了'FirstOrDefault‘的代码,但它仍然出错。实际的错误是,实际的“没有匹配元素的序列”是“show.Events”--它是一个空列表。

让这件事变得难以理解的是,异常发生在报告异常的行之后的行上(尽管进行了大量的清理/重建,添加了空行并删除了一些行)。

我的解决方案是在尝试访问show.Events列表之前检查它的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58505885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档