c# - 为什么我无法访问我的对象模型的属性?

标签 c# linq entity-framework

出于某种奇怪的原因,即使我将其转换为模型类型,我也无法访问该对象的属性。有谁知道为什么? (这可能很明显,但我是 C# 的新手,所以请耐心等待!:o))

Users currentUser = new Users();            
currentUser = (from x in db_tc.Users where x.Id == Convert.ToInt32(User.Identity.Name) select x);

当我调用 currentUser , 我只能访问 CRUD 方法和 List<Users>属性名为 usrList .我没有创建列表定义,所以我想这是自动创建的 Entity Framework 的一部分。

我试过类型转换 currentUser(Users)在实体查询之前,它根本没有帮助。

最佳答案

那是因为您只创建了查询,还没有实际执行它。添加Single()(或First()等)得到结果:

var currentUser = (from x in db_tc.Users where x.Id == Convert.ToInt32(User.Identity.Name) select x).SingleOrDefault();
  • Single() : 获取序列的第一个元素,但如果没有找到元素将抛出异常如果序列有多个元素。
  • First() : 获取序列的第一个元素,如果没有找到则抛出异常。
  • SingleOrDefault()FirstOrDefault() : 与上面相同,但将返回 default(T) 而不是抛出空序列。

LINQ 的这个“延迟执行”方面可能是最难理解的部分。基本思想是您可以使用查询操作(Where()Select() 等)构建一个查询,并且然后您可以执行该查询以实际获得其结果,使用非延迟执行操作之一(Single()ToList() 等)

关于c# - 为什么我无法访问我的对象模型的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207111/

相关文章:

javascript - 限制 JSON 结果

c# - WCF 异常记录

c# - .Net C# 如何连接到外部 SQL Server 数据库? OleDb 还是其他?

c# - 无法将 Select() 的结果转换为 List<T>

c# 使用 Linq 将数组中的数组投影到新数组上?

c# - Entity Framework 中的 SqlMethods.DateDiffMonth

c# - Entity Framework Core 级联删除一对多关系

c# - ajax.abort() 的 ASP.NET MVC 解决方法

c# - 在标签中添加度数符号

c# - Linq 不包含动态查询