出于某种奇怪的原因,即使我将其转换为模型类型,我也无法访问该对象的属性。有谁知道为什么? (这可能很明显,但我是 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/