У меня есть этот рабочий код:
@{
var ekgList = AsList(App.Data["Ekgs"]);
foreach(var ekg in ekgList) {
<div>
@foreach (var entitiesFromSinusDataType in ekg.Sinus) {
if(entitiesFromSinusDataType.EntityId == Content.EntityId) {
<a>@ekg.ShortName</a>
}
}
</div>
}
}
Для того, что я могу понять:
- ekgList - это список (стандартный 2sx c код для доступа к данным)
- ekg.Sinus - это поле в типе контента Ekgs (тип данных Entity, множественный, который создает список объектов из другого типа контента, Sinus)
- Content.EntityId - это int, так же, как entityFromSinusDataType.EntityId
Должен быть простой способ удалить второе l oop и "if", поместив предложение where в первое l oop. Я пробую это шаг за шагом, но как только я попробую это:
@{
var ekgList = AsList(App.Data["Ekgs"]);
foreach(var ekg in ekgList) {
<div>
@foreach (var entitiesFromSinusDataType in ekg.Sinus.Where(i => i.EntityId == Content.EntityId)) {
<a>@ekg.ShortName</a>
}
</div>
}
}
Я получаю эту ошибку:
CS1977: Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type
Это, кажется, вызвано использованием Dynami c types.
Есть ли способ привести списки в не динамическую c их версию?