2013-10-18 58 views
0

我想合併2個數據庫字段,並使用Lambda表達式將其作爲項目填充到Dropdownlist。這是我的控制器上填充dropdownlist的lambda表達式。我嘗試了很多組合,但我無法合併這些字段。你能幫我嗎?我該怎麼做?謝謝。Lambda表達式:如何Concat 2字段?

注意:此處我想合併CityName和MeetingDate字段,如巴黎01.01.2014作爲dropdownlist的一項。

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

你搖滾!非常感謝你的大力幫助。其實我遇到過「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()」 2次沒問題在第3和第10行。你能澄清一下嗎?非常感謝您的幫助。
BR。

+0

對不起,我忘記了這一點,我已經更正了答案,檢查了它並添加了相關鏈接以瞭解更多詳情 –

+1

好的,感謝您的編輯,以便其他人人們可以使用修正的例子。 –

1

什麼,而不是分離CityNameMeetingDate回報級聯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/1027198https://stackoverflow.com/a/17968688/1027198

+0

非常感謝Michal爲您的良好答案。我建議你的回答作爲答案。但不幸的是,由於信譽不足,我無法表決答覆: –