Asp.net mvc Lambda表达式:如何合并2个字段?
我想合并2个数据库字段,并使用Lambda表达式作为项目填充到Dropdownlist。这是我在控制器上填充dropdownlist的lambda表达式。我尝试了很多组合,但无法合并字段。你能帮我吗?我怎么做?谢谢 注意:这里我想合并CityName和MeetingDate字段,如巴黎2014年1月1日,作为dropdownlist的一项Asp.net mvc Lambda表达式:如何合并2个字段?,asp.net-mvc,razor,lambda,concatenation,html-select,Asp.net Mvc,Razor,Lambda,Concatenation,Html Select,我想合并2个数据库字段,并使用Lambda表达式作为项目填充到Dropdownlist。这是我在控制器上填充dropdownlist的lambda表达式。我尝试了很多组合,但无法合并字段。你能帮我吗?我怎么做?谢谢 注意:这里我想合并CityName和MeetingDate字段,如巴黎2014年1月1日,作为dropdownlist的一项 private void PopulateMeetingsDropDownList(object selectedMeetings = null)
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);
}
如何代替分开的
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(本地)中执行。通常,这是首选的方式(提示:性能)-对数据库进行过滤、排序、分组等,以及应用程序中的其他事情
更多详情:,。你太棒了!非常感谢你的大力帮助。实际上,我遇到了“LINQ to Entities无法识别方法'System.String Format(System.String,System.Object,System.Object)'方法,并且此方法无法转换为存储表达式。”首次应用方法后出现错误消息,但通过在第三行添加“.ToList()”我成功了。因此,为了通知那些可能需要这种强大功能的人,这里是我的控制器中方法的最后状态:
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);
}
我认为在第三行和第十行上使用“.ToList()”两次没有问题。请你澄清一下好吗?再次非常感谢您的帮助
br.对不起,我忘了。我已经更正了答案,请检查并添加了链接以了解更多详细信息。好的,谢谢您的编辑,以便其他人可以使用更正的示例。非常感谢Michal给出的好答案。我建议你的答复作为答复。但不幸的是,我不能投票赞成你的答复,因为没有足够的声誉:(