0

我想将 LINQ 2 SQL 查询的结果添加到标签或文本框中。我使用“CustomerClass”类作为数据层。在这里,我有一个带有 LINQ 查询的方法。此结果需要返回到代码隐藏文件并添加到标签或文本框中。

类中的方法:

public static object SelectCustomerByUser(string user)
{
    var query = (from p in dc.Customers
                 where p.No_ == user
                 select p).Single();
    return query;
}

文件后面的代码:

protected void Page_Load(object sender, EventArgs e)
{
    string user = Membership.GetUser().UserName.ToString().ToUpper();
    var queryresult = CustomerClass.SelectCustomerByUser(user);
    lblStreet.Text = ?????????

}

当我将 LINQ 查询直接设置到文件后面的代码中时,我可以直接分配 lblStreet.Text,例如:lblStreet.Text = queryresult.Street但我想将 LINQ 查询与文件后面的代码分开。

4

5 回答 5

0

因此,linq 似乎从 dc.Customers 类型返回了一个对象CustomerClass。您可以创建一个函数(类似于string GetCustomerStreet(){...}),以填充标签:

lblStreet.Text = ((CustomerClass)queryresult).GetCustomerStreet();
于 2012-08-06T07:52:55.150 回答
0
public static CustomerClass SelectCustomerByUser(string user)
{
    var query = (from p in dc.Customers
                 where p.No_ == user
                 select p);
    if(query.Any())
    {
        var result=query.FirstOrDefault();
        return new CustomerClass
        {
            Id = result.Id,
            Name = result.Name,
            Age = result.Age
        }
    }
    return null;
}

背后的代码

protected void Page_Load(object sender, EventArgs e)
{
    string user = Membership.GetUser().UserName.ToString().ToUpper();
    var queryresult = CustomerClass.SelectCustomerByUser(user);
    lblStreet.Text = queryresult!=null?queryresult.Street:"";

}

或者

public static CustomerClass SelectCustomerByUser(string user)
{
    var query = (from p in dc.Customers
                 where p.No_ == user
                 select p);
    if(query.Any())
    {
        return query.FirstOrDefault();      
    }
    return null;
}

代码背后

protected void Page_Load(object sender, EventArgs e)
{
    string user = Membership.GetUser().UserName.ToString().ToUpper();
    var queryresult = CustomerClass.SelectCustomerByUser(user);
    lblStreet.Text = queryresult!=null?queryresult.Street:"";
}
于 2012-08-06T07:54:03.323 回答
0

我会让函数返回一个 Customer 而不是像这样的对象:

public static Customer SelectCustomerByUser(string user)

它是一个 Customer 类,函数被称为SelectCustomerByUser它会返回一个客户,这将使您能够访问位于街道上的客户的成员。

在这种特殊情况下,您可以考虑使用SingleOrDefault 。

于 2012-08-06T07:57:15.283 回答
0

该方法SelectCustomerByUser返回一个客户类型的盒装对象,因此您需要(类型转换)它并将属性/字段值分配给您的用户界面。unbox

就像是:

var queryresult = CustomerClass.SelectCustomerByUser(user) as Customer;
if(queryresult!=null)
  lblStreet.Text= queryresult.Street;  

如果您更改返回类型SelectCustomerByUser并使用FirstOrDefault而不是Single方法会更好。

public static Customer SelectCustomerByUser(string user)
{
    var query = (from p in dc.Customers
                 where p.No_ == user
                 select p).Single();
    return query;
}
于 2012-08-06T07:51:23.643 回答
0

假设

var queryresult = CustomerClass.SelectCustomerByUser(user);

返回客户的一个实例,您可以将其转换为该实例,然后将属性连接到一个字符串中,或​​者使用 StringBuilder,无论如何,像这样:,

Customer c = (Customer)queryresult);
textbox.Text = String.Format("{0} email = {1}",customer.name , customer.email);

顺便说一句,我会做的查询

select p).SingleOrDefault();     

然后在进行强制转换之前测试结果是否为 null

于 2012-08-06T08:01:06.650 回答