【发布时间】:2017-08-09 09:23:59
【问题描述】:
我是 C#、Entity Framework 和 LINW 的新手,希望有人可以在代码中解释一些关于 LINQ 的内容。我的程序中有一个从表中选择用户的方法。那个方法是:
public static cp_user SelectUser(string user, string passw)
{
try
{
cp_user entityUser = (from u in _db.cp_user
where u.username == user && u.password == passw
select u).FirstOrDefault();
return entityUser;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
return null;
}
cp_user 是与我的数据库中的表对应的类。 _db 是一个包含对数据库实例的引用的字段。
在选择用户方法中,我知道创建了 cp_user 类型的局部变量,它由以下语句定义:
(from u in _db.cp_user
where u.username == user && u.password == passw
select u).FirstOrDefault();
我对声明的第一部分感到困惑。 “来自 _dp.cp_user 中的你”。 到目前为止,我一直在使用 MySQL,所以看到这个“来自 u”令人困惑。在 MySQL 中,这个“u”指的是一个表。但在 Linq 中,我对它的作用感到困惑。
我确实大致理解了语句的其余部分,方法中的用户名和密码参数必须等于表中的数据。并且它将返回数据库对象。但再次对 u 感到困惑,在最后一部分说“选择 u”。
我的另一个问题是另一种称为 checkany 的方法,它检查用户登录是否正确:
public static bool CheckAny(string user, string passw)
{
bool itIsAlredy = _db.cp_user.Any(u => u.username == user && u.password == passw);
return itIsAlredy;
}
我了解 CheckAny 方法采用用户名和密码并创建一个布尔变量,该变量可以根据语句返回 true 或 false。这是我不明白的部分。
- 对我来说这个语句“(u => u.username == user && u.password == passw);”看起来这意味着方法参数中的用户名和密码必须存在于数据库中。但是学校有人告诉我,这意味着用户名和密码必须正确对应;你不能有一个连接到另一个用户名的密码。那么这个声明实际上说的是什么。而且我也不明白整个“u => u.username”。比如这个你代表什么。如果是,它是特殊的 linq 语法是什么意思?任何人都有解释这一点的链接?
非常抱歉,如果我有任何错误的陈述,请纠正我,如果我是编程新手,通常只使用 MySQL。如果有人能回答我的 3 个问题,将不胜感激。
提前致谢
【问题讨论】:
-
一般来说,您需要开始使用 Linq to SQL 或 Linq to Anything。这是太基本的东西,无法在这里解释。
-
@niksofteng 好的,非常感谢你,在提出另一个这样的问题之前,我会记住这一点。问候
标签: c# entity-framework linq