c# - 从实体 IQueryable 对象列表中选择单个对象

标签 c# entity-framework linq

我有一个如下所示的 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/

相关文章:

c# - 我应该在 Stream.CopyTo 之前使用 Stream.Flush 吗?

c# - MouseUp 和 MouseDown 始终具有相同的对象发送者

c# - 提高在 EF 中为一对多关系插入数据的性能

c# - 用于数据库访问的静态类的 ASP.NET MVC 指南

asp.net - Linq:未知之前代码中的命名空间

c# - 如何在 C# 中使用 LINQ 搜索特定字符串属性的对象列表

asp.net - LINQ to SQL Web 应用程序最佳实践

c# - 将桌面 C# 应用程序连接到在线 MySQL 数据库

c# - 为什么 Resharper 无法识别我的网络引用?

c# - 如何使用 Linq 从一系列的 3 个表中进行选择?