2012-08-06 57 views
0

我想将LINQ 2 SQL查询的结果添加到标签或文本框。 我使用类“CustomerClass”作为数据层。在这里我有一个LINQ查询的方法。 此结果需要返回到文件后面的代码并添加到标签或文本框中。将返回的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查询与代码隐藏的文件分离。

回答

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

CustomerClass.SelectCustomerByUser(用户)已经返回Customer对象,所以不需要再次输入。 – 2012-08-06 08:02:25

+1

看看OP中的方法的返回类型 - “公共静态对象SelectCustomerByUser(字符串用户)' – adatapost 2012-08-06 08:04:07

+0

已经看过了,其公共静态Customer CustomerCustomerByUser(字符串用户)不是公共静态对象SelectCustomerByUser(字符串用户)。请亲爱的检查你的解决方案:)而且你还没有检查空值。 – 2012-08-06 09:36:01

0

所以,似乎linq从类型为CustomerClass的dc.Customers返回一个对象。你可以创建一个函数(像string GetCustomerStreet(){...}),以polulate标签:

lblStreet.Text = ((CustomerClass)queryresult).GetCustomerStreet(); 
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:""; 
} 
0

我会让函数返回,而不是像对象的客户:

public static Customer SelectCustomerByUser(string user) 

它的一个客户类和dunction被称为SelectCustomerByUser它将使SENCE它返回一个客户,这将wnable你访问躺在街上的客户的成员。

而且你可以考虑在这种特殊情况下使用SingleOrDefault

0

假设

var queryresult = CustomerClass.SelectCustomerByUser(user); 

返回客户的实例,你可以将它转换为再串连属性为一个字符串,或者使用StringBuilder,什么的,像这样的:,

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

BTW查询我会做

select p).SingleOrDefault();  

,然后做牛逼之前测试的结果为空他投了