我有一个查询,它使用LINQ
从数据库返回多个列var donors = from d2 in db.Donors
where d2.Status == "Pending"
select new { donorID = d2.donorID, bloodGroup = d2.bloodGroup, contactNo = d2.contactMobile, status = d2.Status };
现在我想在Labels
结果集中访问一个列值的不同donors
中显示结果。
例如:
Label1.Text = donorID;
Label2.Text = bloodGroup;
...等等
请帮我实现这个目标。
答案 0 :(得分:4)
如果您要将标签设置为某个值,则需要单个记录。目前,您正在选择记录的序列。我们假设您只对第一个值感兴趣。你可以写:
var donors = from d2 in db.Donors
where d2.Status == "Pending"
select new { d2.donorID, d2.bloodGroup,
contactNo = d2.contactMobile, status = d2.Status };
var firstDonor = donors.FirstOrDefault();
if (firstDonor != null)
{
Label1.Text = firstDonor.donorID;
Label2.Text = firstDonor.bloodGroup;
// ...
}
else
{
// There weren't any matching donors
}
如果你想显示所有捐赠者的详细信息,你会想要更像网格的东西。
答案 1 :(得分:0)
如果你坚持保留标签,你可以做这样的事情
var donors = from d2 in db.Donors
where d2.Status == "Pending"
select d2;
List<Donors> myDonors = donors.ToList();
int x = 0;
int y = 0;
foreach (var donor in donors)
{
Label myLabel = new Label();
myLabel.Top = x;
myLabel.Left = y;
myLabel.Text = donor.donorID.ToString();
panel1.Controls.Add(myLabel);
y += myLabel.Width + 5;
myLabel = new Label();
myLabel.Top = x;
myLabel.Left = y;
myLabel.Text = donor.blodGroup.ToString();
panel1.Controls.Add(myLabel);
y += myLabel.Width + 5;
myLabel = new Label();
myLabel.Top = x;
myLabel.Left = y;
myLabel.Text = donor.contactNo.ToString();
panel1.Controls.Add(myLabel);
y += myLabel.Width + 5;
myLabel = new Label();
myLabel.Top = x;
myLabel.Left = y;
myLabel.Text = donor.status.ToString();
panel1.Controls.Add(myLabel);
y += myLabel.Width + 5;
y = 0;
x += myLabel.Height + 5;
}