Хобрук: Ваш путь к мастерству в программировании

Невозможно неявно преобразовать тип IQueryable в класс

Я пытаюсь получить несколько результатов в список для отправки обратно в JS для заполнения сетки. Первый запрос (_mappedQuery) получает данные. Затем я хочу поместить значения в объект _udfList. Я продолжаю получать отклонения от ошибки «невозможно преобразовать запрашиваемый в класс»

Я пробовал устанавливать в виде списков, создавать объекты запросов, объекты одного класса. Всем пока не везет

            MemberMNCFormsList _udfList = new MemberMNCFormsList();

            foreach (var _row in _udfTables) {
                System.Diagnostics.Debugger.Break();
                System.Diagnostics.Debugger.Launch();

                var _mappedQuery = (from res in Query<UdfColumnMapping>().AsNoTracking()
                                    join udf in Query<UserDefinedForms>().AsNoTracking() on res.Func_Area equals udf.Func_Area
                                    join ds in Query<Data_Set>().AsNoTracking() on res.Data_ID equals ds.DATA_ID
                                    join df in Query<DEFITEM>().AsNoTracking() on ds.DEF_ID equals df.DEF_ID
                                    where udf.UserDefinedForms_ID == _row.UserDefinedForms_ID &&
                                     (res.FieldName.ToLower().StartsWith("reviewname") ||
                                     res.FieldName.ToLower().StartsWith("disposition") ||
                                     res.FieldName.ToLower().StartsWith("reviewdate"))
                                    select (new MemberMNCForms {
                                        UserDefinedFormData_ID = _row.UserDefinedFormData_ID,
                                        FormId = udf.UserDefinedForms_ID,
                                        MappedColumnName = res.MappedColumnName,
                                        FieldName = res.FieldName,
                                        MappedTableName = res.MappedTableName,
                                        Reviewed_Name = _row.LAST_NAME.Trim() + ", " + _row.FIRST_NAME.Trim(),
                                        Reviewed_Date = _row.CreateDate.GetShortDateorEmpty().ToString()
                                    }));

                var _formRow = _mappedQuery.Select(t => new MemberMNCForms {
                    UserDefinedFormData_ID = t.UserDefinedFormData_ID,
                    FormId = t.FormId,
                    MappedColumnName = t.MappedColumnName,
                    FieldName = t.FieldName,
                    MappedTableName = t.MappedTableName,
                    Reviewed_Name = t.Reviewed_Name,
                    Reviewed_Date = t.Reviewed_Date
                })));

                _udfList.list.Add(_formRow);

   public sealed class MemberMNCForms {
        public Guid? UserDefinedFormData_ID { get; set; }
        public int FormId { get; set; }
        public string Reviewed_Name { get; set; }
        public string MappedColumnName { get; set; }
        public string FieldName { get; set; }
        public string MappedTableName { get; set; }
        public int? MNCDetermination_ID { get; set; }
        public string Reviewed_By { get; set; }
        public string Reviewed_Date { get; set; }
    }

    public sealed class MemberMNCFormsList : ErrorInfo
    {
        public List<MemberMNCForms> list = new List<MemberMNCForms>();
        public int Count { get; set; }
    }

Я пытаюсь получить объект _udfList, заполненный значениями, поступающими из _mappedQuery. Единственное, что я думал, будет работать, это создать объект MemberMNCForms для каждой записи в _mappedQuery, чтобы затем добавить в _udfList.list.

12.09.2019

  • В какой именно строке возникает исключение? 12.09.2019

Ответы:


1

_formRow is an IEnumerable<MemberMNCForms>

var _formRow = _mappedQuery.Select(t => new MemberMNCForms {
    UserDefinedFormData_ID = t.UserDefinedFormData_ID,
    FormId = t.FormId,
    MappedColumnName = t.MappedColumnName,
    FieldName = t.FieldName,
    MappedTableName = t.MappedTableName,
    Reviewed_Name = t.Reviewed_Name,
    Reviewed_Date = t.Reviewed_Date
})));

Здесь вы пытаетесь добавить IEnumerable<MemberMNCForms> к List<MemberMNCForms>

_udfList.list.Add(_formRow);

Вы не можете сделать это с .Add. Вы должны использовать .AddRange

Попробуй это:

_udfList.list.AddRange(_formRow);
12.09.2019

2

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

Я предполагаю, что вы ожидаете коллекцию MemberMNCForms назад, поэтому вам нужно будет использовать AddRange вместо Add

_udfList.list.AddRange(_formRow);

Чтобы убедиться, что он был выполнен, вы можете использовать ToList

_udfList.list.AddRange(_formRow.ToList());

Если вы просто ожидаете одного результата, вы можете использовать SingleOrDefault.

var result = _formRow.SingleOrDefault();
if (result != null) {
    _udfList.list.Add(result);
}
12.09.2019
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..