SelectMany три уровня глубоко

На значение столбца ссылаются хэши, например, #STUDENT_ID#.

Посмотрите, что написал Джеки Макилрой: « Удалить строку отчета с помощью динамического действия » ( https://jackiemcilroy.blogspot.com/2018/03/delete- row-of-report-with-dynamic-action.html ). Она описывает процесс подробно, с большим количеством скриншотов. Надеюсь, это поможет вам сделать то, что вы делаете.


На вашем месте я бы сделал одно из следующих действий:

  • использовать интерактивный отчет с формой (и перейти к форме, чтобы удалить строку) [ 114]
  • если бы это был табличный макет, я бы попробовал
    • старую табличную форму
    • новую интерактивную сетку

Я не думаю, что удаляю строки из интерактивного отчета (но хорошо, это только я, и мои идеи обычно не слишком умны). [1111 ]

18
задан John Saunders 14 August 2012 в 02:46
поделиться

2 ответа

Ваш запрос возвращает все идентификаторы виджета вместо всех виджетов. Если Вы просто хотите виджеты, просто используйте:

var q = source.SelectMany(foo => foo.Bar)
              .SelectMany(bar => bar.Widget)
              .ToList();

Если это все еще дает "неправильный результат", объясните, каким образом это - неправильный результат. Пример кода был бы очень полезен :)

Править: Хорошо, если Вы хотите идентификаторы виджета, Ваш исходный код должен быть прекрасным:

var q = source.SelectMany(foo => foo.Bar)
              .SelectMany(bar => bar.Widget)
              .Select(widget => widget.WidgetId)
              .ToList();

Это могло также быть записано как

var q = (from foo in source
         from bar in foo.Bar
         from widget in bar.Widget
         select widgetId).ToList();

если Вам нравится формат выражения запроса.

Это действительно должно работать - если это не работает, который предполагает, что существует что-то не так с Вашими данными.

Мы должны были проверить, прежде чем - будет это просто LINQ к Объектам, или более необычный поставщик (например, LINQ к SQL)?

33
ответ дан 30 November 2019 в 07:28
поделиться
var q = (
    from f in foo
    from b in f.Bars
    from w in b.Widgets
    select w.WidgetId
   ).ToList();

Также обратите внимание, что, если Вы хотите уникальный список, можно сделать.Distinct ().ToList () вместо этого.

2
ответ дан 30 November 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: