我有下面显示的LINQ查询语句,该语句从SQL表查询Entity Framework PersonalityType对象。表格中有一列具有独特ID(手动创建)的个性。使用Linq,我希望对每个查询选择一个单行PersonalityType对象,因此实际上不需要使用.ToList()或.ToArray(),因为选择总是有一个匹配项。 / p>
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();
如何从Linq查询返回PersonalityTypeModel
而不是List<PersonalityTypeModel>
?
答案 0 :(得分:3)
如果您的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();