【发布时间】:2016-12-17 02:01:57
【问题描述】:
当我选择一个日期时,我想显示在该日期进行预订的用户的姓名,但我只能看到最后一次预订的用户。我该如何解决这个问题?
这是我的代码
foreach (Reservation i in con.Reservations)
{
var user = con.Users.Where(se => se.id == i.user_id).FirstOrDefault();
if (i.date == date && i.hour == label4.Text )
{
label4.Text = user.Name + " " + user.Surname;
}
else
{
label4.Text = "17:00 - 18:00";
}
if (i.date == date && i.hour == label5.Text)
{
label5.Text = user.Name + " " + user.Surname;
}
else
{
label5.Text = "16:00 - 17:00";
}
if (i.date == date && i.hour == label6.Text)
{
label6.Text = user.Name + " " + user.Surname;
}
else
{
label6.Text = "18:00 - 19:00";
}
if (i.date == date && i.hour == label7.Text)
{
label7.Text = user.Name + " " + user.Surname;
}
else {
label7.Text = "19:00 - 20:00";
}
}
【问题讨论】:
-
FirstOrDefault 明确要求只提供一个。删除
.FirstOrDefault(),然后更新您的代码以处理多行而不是一行。 -
当我删除 .FirstOrDefault() 时,出现错误。我不能这样使用 -> user.Name
-
是的,这是正确的 - 我提到的“更新代码以处理多行而不是单行”的一部分。您现在有一个用户列表。编写代码以打印列表中的每个用户。例如,您可能想用逗号分隔名称:
var userNames = string.Join(", ", users.Select(u => u.Name + " " + u.Surname)) -
我像这样更新我的代码
foreach (Reservation i in con.Reservations) { var user = con.Users.Where(se => se.id == i.user_id); var names = string.Join(",", user.Select(u => u.Name + " " + u.Surname)); if (i.date == date && i.hour == label4.Text ) { label4.Text = names; } else { label4.Text = "17:00 - 18:00"; } -
但没有任何变化?
标签: c# sql sql-server linq