Выберите один объект из списка объектов Entity IQueryable - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть оператор запроса LINQ, показанный ниже, который запрашивает объект Entity Framework PersonalityType из таблицы SQL.В таблице есть столбец с уникальными идентификаторами (созданными вручную) персоналиями.Используя Linq, я хотел бы сделать выборку одного объекта PersonalityType для каждого запроса, поэтому на самом деле нет необходимости использовать .ToList () или .ToArray (), потому что всегда будет одно совпадение для select.

    public enum Personality{Introvert = 0, Extrovert = 1, Agreeable = 2, Non-Agreeable = 3};
    var Personality = (from p in _ctx.PersonalityType.AsNoTracking()
    where (p.Id == (int) person.personality) // Personality Enum to int
    select new PersonalityTypeModel
    {
          PersonalityDescription = p.Description,
          HTMLContent = p.HTML
    }).ToArray();

Как я могу вернуть PersonalityTypeModel, а не List<PersonalityTypeModel> из запроса Linq?

1 Ответ

0 голосов
/ 26 ноября 2018

Если ваша таблица Sql имеет одну запись на PersonalityType, то вы можете использовать ).SingleOrDefault(); или ).FirstOrDefault();, как

var Personality = (from p in _ctx.PersonalityType.AsNoTracking()
where (p.Id == (int) person.personality)
select new PersonalityTypeModel
{
      PersonalityDescription = p.Description,
      HTMLContent = p.HTML
}).SingleOrDefault();   //FirstOrDefault()

Таким образом, запрос возвращает один объект PersonalityTypeModel вместо List<PersonalityTypeModel>.

Примечание:

Если ваша таблица Sql содержит более одной записи с определенным PersonalityType, то вам следует использовать.

}).Take(1).SingleOrDefault();

в противном случаеисключение будет брошено.или вы можете просто использовать.

}).FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...