ASP.NET LINQ SQL获取特定字段

本文关键字:字段 获取 SQL NET LINQ ASP | 更新日期: 2023-09-27 18:09:25

我正在尝试在ASP上设置文本框。. NET网页使用LINQ - SQL。下面是执行select语句的代码:

    EQCN = Request.QueryString["EQCN"];
    var equipment = from n in db.equipments
                    where n.EQCN.ToString() == EQCN
                    select n;

如何设置TextBox1。文本是表中的特定字段吗?

Thanks so much

编辑

我需要将表中的每个字段输出到不同的文本框中。因此,对单个对象执行查询似乎有点多。一定有办法做到这一点吗?

谢谢

ASP.NET LINQ SQL获取特定字段

你可以选择合适的字段开始:

EQCN = Request.QueryString["EQCN"];
var values = from n in db.equipments
             where n.EQCN.ToString() == EQCN
             select n.FieldYouWant;
// Or possibly Single, or First...
var singleValue = values.FirstOrDefault();

认为这就是你想要的,但如果不是,请澄清你的问题。

编辑:要回答你的后续问题,你可以使用:
EQCN = Request.QueryString["EQCN"];
var query = from n in db.equipments
             where n.EQCN.ToString() == EQCN
             select n;
// Or possibly Single, or First...
var entity = query.Single();
textBox1.Text = entity.Name;
textBox2.Text = entity.Description;
textBox3.Text = entity.Title;
// etc

这是假设您想要访问实体中的所有内容。如果实体非常大,而你只需要几个字段,你可能想要做这样的事情:

EQCN = Request.QueryString["EQCN"];
var query = from n in db.equipments
             where n.EQCN.ToString() == EQCN
             select new { n.Name, n.Description, n.Title };
// Or possibly Single, or First...
var projection = query.Single();
textBox1.Text = projection.Name;
textBox2.Text = projection.Description;
textBox3.Text = projection.Title;

我不确定我是否真的将数据访问和UI层如此紧密地结合在一起,但这是另一回事…

您只需要执行一次查询,但是一旦完成,您将不得不将每个字段分配给一个TextBox。首先只检索您想要的单个项:

EQCN = Request.QueryString["EQCN"];
var equipment = (from n in db.equipments
                 where n.EQCN.ToString() == EQCN
                 select n).FirstOrDefault();

然后遍历并将每个TextBox分配到相应的字段:

txtName.Text = equipment.Name;
txtDescription.Text = equipment.Description;
txtValue1.Text = equipment.Value1;
txtValue2.Text = equipment.Value2;
//...

如果你有几十个textbox要分配,你可以设置一个可以绑定到equipment对象的自定义控件,但即使这样,你仍然需要为你的控件编写绑定代码。

我能想到的完全自动化这个过程的唯一方法是在对象的字段之后命名每个TextBox,然后使用反射来匹配它们的值:

    var textboxes = Panel1.Controls.OfType<TextBox>();
    foreach (TextBox txt in textboxes)
    {
        string fieldname = txt.ID.Remove(0, 3); //"txtDescription" becomes "Description"
        string value = equipment.GetType().GetProperty(fieldname).GetValue(equipment, null) as string;
        txt.Text = value;
    }