LINQ to SQL:检索数据并将其放入文本框中

本文关键字:文本 SQL to 检索 数据 LINQ | 更新日期: 2023-09-27 18:31:46

我是 LINQ 的新手,如果我的问题很愚蠢,很抱歉。

我需要从数据库中检索一些值并将它们放在文本框中。仅此而已。类似于下面的代码,但使用 LINQ:

编辑:实际上,我想检索多个字段。诸如此类:

SqlDataReader dr = new functionThatReturnsDataReader();
if (dr.HasRows) {
    dr.Read();
    txtId = dr["Id"].ToString();
    txtName = dr["Name"].ToString();
}

我在网上找到了这个解决方案:

IDbCommand command = dc.GetCommand(query);
command.Connection = dc.Connection;
command.Connection.Open();
IDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);

但是,如果我将 LINQ 与标准 executeReader 混合使用,我似乎正在抛弃它所代表的一切。没有理由构建数据上下文和查询,它们像 ADO 一样执行它们......

如何在不使用IDbCommand和IDataReader的情况下实现相同的目标?

LINQ to SQL:检索数据并将其放入文本框中

我认为您需要从数据库创建一个 LINQ to SQL 类:http://msdn.microsoft.com/en-us/library/bb384428.aspx

然后,您可以将数据库表视为对象,并使用linq进行查询...如果没有您尝试运行的查询的细节,我无法为您构造 linq 查询,但创建 DBML 文件是第一步。

将 LINQ(或实体框架或其他 ORM)解决方案与 ADO.NET 解决方案进行比较时要考虑的一件事是,ORM 通常是强类型的。这意味着您需要对它们应用面向对象的原则。

如果要在同一函数中处理上下文、查询和结果,则可以执行以下操作:

using(var context = new YourContext())
{
    txtId.Text = (from t in context.YourTable
                  where t.Conditions
                  select t.Id).FirstOrDefault();
}

如果它们不在同一函数中(实际上,它们不应该是),那么这样的事情就会起作用:

string FunctionThatReturnsId()
{
    using(var context = new YourContext())
    {
        return (from t in context.YourTable
                      where t.Conditions
                      select t.Id).FirstOrDefault();
    }
}
...
txtId.Text = FunctionThatReturnsId();
如果您

使用的是实体框架,则不需要任何查询,只需在文本框中输入id并点击搜索按钮,它将在该id的文本框中显示所有记录。

      EntityFramework_mvcEntities db = new EntityFramework_mvcEntities();

        int i =Convert.ToInt32( txtsrch.Text);
        Employee p = db.Employees.Find(i);

        TextBox1.Text = p.Name;
         TextBox2.Text = p.Email;
        TextBox4.Text = p.Mobile;
        db.SaveChanges();
    }
var q = from c in context.GetTable<tbl_user>()
    where c.user_ID == lbuserid.Text.ToString()
    select new
    {
        c.Username,
        c.firstname
    };
foreach (var item in q)
{
    lbusername.Text = item.Username;
    lbfirstname.Text = item.firstname;
}