我有一个如下所示的 LINQ 查询语句,它从 SQL 表中查询一个 Entity Framework PersonalityType 对象。在表中有一列具有唯一的个性 ID(手动创建)。使用 Linq,我想为每个查询选择单行 PersonalityType 对象,因此实际上没有必要使用 .ToList() 或 .ToArray() 因为选择总是有一个匹配项。
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 查询?
最佳答案
如果您的 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();
关于c# - 从实体 IQueryable 对象列表中选择单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53475962/