我想将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查询与文件后面的代码分开。
答案 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