Как дать DTO для LINQ выбрать много запросов в С#

Как дать DTO для выбора или SelectMany

public class PersonDTO
            {
                public int Id { get; set; }
                public string Name { get; set; }
                public string UserName { get; set; }
                public string Email { get; set; }
            }

var person = _context.Persons.Where(x=>x.PersonId==1).SelectMany(PersonDTO);

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

что означает что-то вроде graphql, который получает данные с помощью DTO, а DTO может быть только именем, или именем пользователя, или электронной почтой, или всеми ими, любая идея?

Вам понадобится какой-то способ сопоставить их с dto (конструктор копирования, вручную и т. д.), и, судя по тому, что я вижу, вам нужен Select, а не SelectMany.

ChiefTwoPencils 22.04.2022 18:45

это работа? _context.Persons.Where(x => x.PersonId == 1).Select(x => typeof(PersonDTO));

regestea23 22.04.2022 18:52

Что говорит Шеф: вам не нужно сглаживать структуру, поэтому просто используйте Select или, в зависимости от того, как вы хотите двигаться дальше, может быть, даже просто .ToList. И тогда вы, возможно, захотите рассмотреть некоторые библиотеки Mapper? Как AutoMapper или Mapster, ...

Fildor 22.04.2022 18:53

Имеет ли Entity те же свойства, что и DTO?

Fildor 22.04.2022 18:54
_context.Persons.Where(x=>x.PersonId==1).Select(p => new PersonDTO { Id = p.PersonId, /* etc */ }).FirstOrDefault()
Jesse de Wit 22.04.2022 18:56
Получение данных из формы с помощью JavaScript - краткое руководство
Получение данных из формы с помощью JavaScript - краткое руководство
Получить данные из формы с помощью JS очень просто: вы запрашиваете элемент формы, передаете его конструктору new FormData() и, наконец, получаете...
Пользовательские правила валидации в Laravel
Пользовательские правила валидации в Laravel
Если вы хотите создать свое собственное правило валидации, Laravel предоставляет возможность сделать это. Создайте правило с помощью следующей...
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
1
5
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

_context.Persons.Where(x => x.PersonId == 1).Select(x => typeof(PersonDTO)); не будет автоматически отображать ваш тип.

То, что вы, вероятно, хотите, выглядит примерно так, когда вы делаете это «вручную»:

_context.Persons
           .Where(x => x.PersonId == 1)
           .Select(x => new PersonDto(){
                Id = x.Id,
                Name = x.Name,
                UserName = x.UserName,
                Email = x.Email
            });

Я пытаюсь сделать что-то вроде graphql, который получает данные с помощью DTO, что означает, что DTO может быть только именем, именем пользователя, адресом электронной почты или всеми ими, любая идея?

regestea23 22.04.2022 19:03

@ regestea23 Похоже, вы хотите вернуть потенциально динамический объект из набора данных. Это правильно?

Mike Hofer 22.04.2022 22:03

точно, я хочу создать службу, которой я даю модель или DTO, и она возвращает только те необработанные данные, которые указаны в модели или DTO, но только из таблицы лиц или таблицы сведений о пользователях.

regestea23 23.04.2022 07:46

Можете ли вы добавить пример к вопросу? Боюсь, это звучит так, как будто вам нужно подумать. Или помощь Mapper lib...

Fildor 23.04.2022 14:45

Я пытаюсь сделать то же, что и graphql, но только с LINQ.

regestea23 23.04.2022 15:36

Другие вопросы по теме

ASP NET MVC 6 — как получить количество продуктов для каждого значения перечисления
EntityFramework (только аннотации данных) Связь не разрешается с идентификатором
Исправить «Данные имеют значение Null. Этот метод или свойство нельзя вызывать для нулевых значений» без использования аннотаций данных,
Разделить одну строку на несколько на основе разделения строки в нескольких ячейках
Каков наилучший способ присоединиться к нескольким таблицам с помощью Entity framework?
Внешний ключ без идентификаторов для столбца с тем же именем, что и свойство навигации
Как остановить добавление миграции dotnet ef от создания ненужных дополнительных полей
System.InvalidOperationException: «Не удалось перевести выражение LINQ. Либо переписать запрос в форме, которую можно перевести
Как использовать строку подключения EF и строку подключения ADO.Net в одном проекте
Как использовать строку при выборе в Entity Framework на .NET 6