这是使用Ling to SQL时访问值的正确方法。我尝试返回IQueryable,但收到错误,指出“在Dispose后访问DataContext”。然后将它转换成一个列表。可以告诉我一些是否正常或建议我一些其他你认为会更有效的答案。我可以在将要获取数据的所有其他函数中使用相同的实现吗?请帮忙。
public List<SS_User> Login(string UserName,String Password)
{
using (DbContext = new DALDataContext())
{
IQueryable<SS_User> User = (from Users in DbContext.SS_Users
where (Users.UserName == UserName && Users.Password == Password)
select Users);
return User.ToList<SS_User>();
}
}
答案 0 :(得分:4)
它会完成这项工作。请注意,你过度具体是为了自己的生活 - 你可以这样做:
return (from user in dB.Users
where {your test}
select user).ToList();
但这不是操作任何不同。
思想:
有关返回IQueryable时无效的原因是查询是“延期” - 它尚未执行。如果在迭代查询(foreach,ToList等)之前处置数据上下文(“using”),则查询无法工作。这就像从水龙头上取下软管,然后走到“商业端”,打开喷嘴,想知道为什么没有水。