2015-01-15 74 views
0

背景:我有幾個表連接使用下列LINQ聲明:LINQ到Razor視圖子查詢用別名值

var viewModel = new ContractorViewModel(); 
var Query = (from c in db.Contractors 
      join cmb in db.ContractorManagedBies on c.ManagedBy equals cmb.ManagedBy 
      join dc in db.DCLocMappings on c.LocationID equals dc.LocationID 
      join at in db.AccountTitles on c.AccountTitleID equals at.AccountTitleID 
      where dc.DeliveryCenter == location 
      select new ContractorViewModel 
      { 
       Id = cmb.ManagedBy, 
       FullName = cmb.ManagerFirstName + ' ' + cmb.ManagerLastName 
      }).ToList(); 

第一個查詢,該行的值是一個整數。我還想運行並行LINQ查詢來加入另一個表中值爲cmb.ManagerFirstName + ' ' + cmb.ManagerLastName的值,並且還顯示運行相同視圖時的值。當把它放在頁面的頂部時,我可以獲得視圖中的大部分細節數據:@model IEnumerable<DriverDatabase.Contractor>;但是,無論我嘗試什麼,我都無法在視圖中獲得FullName的值。我已經嘗試了ViewModel方法。我認爲一個子查詢會加入表格,並在foreach循環的字段中添加組合的名字和姓氏值,但事實並非如此。我的問題是,如何使用LINQ和ASP.NET 4.5將FullName值賦給Razor視圖?我真的訪問了兩個數據集,但是這個foreach只能識別一個。目前@Html.Display("FullName")不會返回任何內容,並且沒有用於呈現FullName的對象。

回答

1

首先,我會在串聯中使用雙引號(而不是單引號)。

FullName = cmb.ManagerFirstName + " " + cmb.ManagerLastName 

然後,你應該小心與LINQ字符串連接到實體

如果第一個元素是零,例如,整個結果將是無效的。

所以使用COALESCE操作符(我認爲有它的左邊是不夠的)

FullName = cmb.ManagerfirstName ?? string.Empty + " " + cmb.ManagerLastName