2012-11-14 26 views
1

我寫了下面的方法來填充一個DropDownList,它的工作原理。不過,我想用Lambda表達式作爲SelectList初始化器的第一個參數而不是理解查詢來編寫適當的LINQ查詢。我的目標是連接Eventm對象的EventmId和EventmTitle屬性,使其在DropDownList中顯示爲選擇。如何在實體列表中寫入LINQ到實體Lambda和連接屬性

謝謝!

 private void PopulateEventmsDropDownList(object selectedEventm = null) 
      { 
       var eventmsQuery = unitOfWork.EventmRepository.Get(
             orderBy: q => q.OrderBy(d => d.EventmId)); 

       ViewBag.EventmID = new SelectList(
       (from s in eventmsQuery select new { EventmId = s.EventmId.ToString(), 
       FullID = s.EventmId + " " + s.EvtTitle }), 
       "EventmId", "FullID", selectedEventm); 
      } 

回答

1

我想出了這個Lambda表達式一些試驗和錯誤使用LINQPad後在選擇列表的(更換理解查詢)如下:

private void PopulateEventmsDropDownList(object selectedEventm = null) 
    { 
     var eventmsQuery = unitOfWork.EventmRepository.Get(
      orderBy: q => q.OrderBy(d => d.EventmId)); 

     ViewBag.EventmID = new SelectList(nodesQuery.Select(
      x => new {x.NodeId, FullID = string.Join(
      " ", x.NodeId.ToString(), x.Title) }), "EventmId", "FullID", selectedEventm); 
    }