将返回的LINQ结果添加到label / textbox

时间:2012-08-06 07:46:20

标签: asp.net linq-to-sql label return code-behind

我想将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查询direclty设置为代码隐藏文件时,我可以直接分配lblStreet.Text,如:lblStreet.Text = queryresult.Street但我想将LINQ查询与文件后面的代码分开。

5 个答案:

答案 0 :(得分:0)

方法SelectCustomerByUser会返回 Customer 类型的盒装对象,因此您需要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;
}

答案 1 :(得分:0)

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

lblStreet.Text = ((CustomerClass)queryresult).GetCustomerStreet();

答案 2 :(得分: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:"";

}

OR

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

答案 3 :(得分:0)

我会让函数返回Customer而不是像:

这样的对象
public static Customer SelectCustomerByUser(string user)

它是一个Customer类,而且这个组合被称为SelectCustomerByUser它会使它返回一个客户,这将使你无法访问街道上的客户成员。

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

答案 4 :(得分:0)

假设

var queryresult = CustomerClass.SelectCustomerByUser(user);

返回一个Customer实例,您可以将其转换为该属性,然后将属性连接成一个字符串,或使用StringBuilder,无论如何:,

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

btw在查询中我会做什么

select p).SingleOrDefault();     

然后在执行转换

之前测试结果为null