0

ラムダ式を使用して、2 つのデータベース フィールドをマージし、アイテムとしてドロップダウン リストに入力したいと考えています。これは、コントローラーにドロップダウンリストを設定するためのラムダ式です。多くの組み合わせを試しましたが、フィールドをマージできませんでした。どうすればこれを行うことができますか?ありがとう。

注 : ここでは、CityName フィールドと MeetingDate フィールド (Paris 01.01.2014 など) をドロップダウン リストの 1 つのアイテムとしてマージします。

 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);
    }        
4

2 に答える 2

0

あなたはロックします!大変お世話になりました。実際に、「LINQ to Entities はメソッド 'System.String Format(System.String, System.Object, System.Object)' メソッドを認識せず、このメソッドはストア式に変換できません」に遭遇しました。最初にメソッドを適用した後にエラー メッセージが表示されましたが、3 行目に「.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); 
}


3行目と10行目で「 .ToList()」を2回 使っても問題ないと思います。明確にしていただけますか?この度はお世話になり、誠にありがとうございました。
BR。

于 2013-10-18T22:23:16.877 に答える