【问题标题】:Getting a value from database column using Linq C#使用 Linq C# 从数据库列中获取值
【发布时间】:2024-04-29 16:15:02
【问题描述】:

我正在尝试从 SQL 服务器数据库中检索字符串值,我正在处理 C# 项目并且我正在使用 LINQ to SQL。 这是我的代码 sn-p

using (AlHayatEntities entity = new AlHayatEntities())
{
    var query = from o in entity.users
                where o.userName == "" + txtUsername.Text && o.password == "" + txtPassword.Text
                select o.role;
    MessageBox.Show(query + "");
}

这就是桌子的样子

id  | userName | password | role
1     shareef    123        admin

我希望消息打印出“admin”,但它没有。

【问题讨论】:

标签: c# sql linq


【解决方案1】:

在这种情况下,集合的结果是一个 IQueryable,因为您只有一个列,它将是一个 IQueryable。

你可以像这样修改你的代码。

 using (AlHayatEntities entity = new AlHayatEntities())
 {
     var result = (from o in entity.users
                 where o.userName == txtUsername.Text 
                         && o.password ==  txtPassword.Text
                 select o.role).FirstOrDefault();
     MessageBox.Show(result);
 }

我还删除了您示例中的各种“”项,因为它们不需要作为解决方案的一部分。

另一种选择,是遵循查询格式,然后在显示时调用 FirstOrDefault。像下面这样

 using (AlHayatEntities entity = new AlHayatEntities())
 {
     var query = from o in entity.users
                 where o.userName == txtUsername.Text 
                         && o.password ==  txtPassword.Text
                 select o.role;
     MessageBox.Show(query.FirstOrDefault());
 }

您也可以使用.First(),但该调用要求结果有一个条目。如果您没有记录,您可能不想使用它。

【讨论】:

  • 再一次,请不要以纯文本形式存储您的密码。即使这对你有用,它也是一个糟糕的整体解决方案。
  • 我会支持@ZachM 的推荐!
  • @ZachM。谢谢你的注意,我会散列密码以确保安全