我想合并2个数据库字段,并使用Lambda Expression将项目填充到Dropdownlist。这是我的lambda表达式,用于在Controller上填充下拉列表。我尝试了很多组合,但我无法合并这些字段。你能帮帮我,我怎么能这样做?感谢。
注意:这里我想将CityName和MeetingDate字段(例如Paris 01.01.2014)合并为一个下拉列表项。
private void PopulateMeetingsDropDownList(object selectedMeetings = null)
{
var meetingsQuery = repository.Meetings
.Join(repository.Cities, m => m.MeetingCityId, c => c.CityID,
(m, c) => new
{
CityID = c.CityID,
CityName = c.CityName,
MeetingDate=m.MeetingStartDate
})
.OrderBy(x => x.CityID).ToList();
ViewData["MeetingId"] = new SelectList(meetingsQuery, "CityID", "CityName", selectedMeetings);
}
答案 0 :(得分:1)
而不是分开的CityName
和MeetingDate
返回连接DisplayValue
。
更新了代码:
private void PopulateMeetingsDropDownList(object selectedMeetings = null)
{
var meetingsQuery = repository.Meetings
.Join(repository.Cities, m => m.MeetingCityId, c => c.CityID,
(m, c) => new {
CityID = c.CityID,
CityName = c.CityName,
MeetingDate=m.MeetingStartDate
}
)
.OrderBy(x => x.CityID)
.AsEnumerable()
.Select(
i => new {
CityID = i.CityID,
DisplayValue = string.Format(
"{0} {1:dd.MM.yyyy}",
i.CityName, i.MeetingDate)
}
).ToList();
ViewData["MeetingId"] = new SelectList(meetingsQuery, "CityID", "DisplayValue", selectedMeetings);
}
.AsEnumerable()
"分裂"这个查询分为两部分,第一部分是LINQ2SQL,第二部分是LINQ2OBJECT。第一部分将在数据库中执行,第二部分在.NET(本地)中执行。通常这是首选方式(提示:性能) - db上的过滤,排序,分组等,应用程序中的其他内容。
更多详情:https://stackoverflow.com/a/17996264/1027198,https://stackoverflow.com/a/17968688/1027198。
答案 1 :(得分:0)
private void PopulateMeetingsDropDownList(object selectedMeetings = null)
{
var meetingsQuery = repository.Meetings.ToList()
.Join(repository.Cities, m => m.MeetingCityId, c => c.CityID,
(m, c) => new
{
CityID = c.CityID,
DisplayValue = string.Format("{0} ({1:dd MMMM yyyy})", c.CityName, m.MeetingStartDate)
})
.OrderBy(x => x.CityID).ToList();
ViewData["MeetingId"] = new SelectList(meetingsQuery, "CityID", "DisplayValue", selectedMeetings);
}
我认为在第3行和第10行使用“ .ToList()”2次没有问题。你能澄清一下吗?再次感谢您的帮助。
BR。