LINQ to SQL:检索数据并将其放在textBox中

时间:2013-09-18 18:29:11

标签: c# sql sql-server linq linq-to-sql

我对LINQ不熟悉,如果我的问题很愚蠢,那就很抱歉。

我需要从数据库中检索一些值并将它们放在textBoxes中。只是。类似下面的代码,但使用LINQ:

编辑:实际上,我想要检索多个字段。像那样:

SqlDataReader dr = new functionThatReturnsDataReader();
if (dr.HasRows) {
    dr.Read();

    txtId = dr["Id"].ToString();
    txtName = dr["Name"].ToString();
}

我找到了this solution online

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

然而,如果我把它与标准的executeReader混合在一起,似乎我正在扔掉LINQ所代表的一切。没有理由构建数据上下文和查询,并像ADO一样执行它们。

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

4 个答案:

答案 0 :(得分:1)

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

然后你可以像对象一样对待数据库表并用linq查询...没有你想要运行的查询的细节,我不能为你构造linq查询,但是创建DBML文件是第一个步骤

答案 1 :(得分:1)

在将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();

答案 2 :(得分:0)

如果您正在使用实体框架,那么您不需要任何查询只需在文本框中编写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();
    }

答案 3 :(得分:-1)

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;
}