2016-07-30 55 views
7

我嘗試包括匿名類型這樣定義的導航屬性: 我想除了CompanyTitle所有incomelist屬性,PeriodTypeName包含路徑表達式必須是指在type.in預先加載

var incomeList = ctx.IncomeLists.Include(i => new 
       { 
        CompanyTitle = i.CompanyId.ToString() + "/" + i.Company.CompanyName, 
        PeriodTypeName = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName) 
       }).ToList() 

我的模型部分是這樣的: enter image description here

,但我得到以下異常:

包含路徑表達式必須引用在該類型上定義的導航屬性 。使用虛線路徑作爲參考導航 屬性和Select運算符用於收集導航 屬性。參數名稱:路徑

結果應該是Gridview的數據源。

+0

檢查這個https://msdn.microsoft.com/en-us/library/bb738708(v=vs.110).aspx –

+0

你不能包括的對象。你實際上必須包含導航屬性。如果要包含兩個屬性,請使用Include()。Include()。 – DevilSuichiro

回答

9

您不能使用包括選擇這樣的數據。 包含用於加載相關數據。你應該加載你的實體使用包括然後選擇你想要的。請記住刪除.ToString()CompanyId。 EF會爲你做。您的查詢應該是這樣的:

var incomeList = ctx.IncomeLists 
    .Include(i => i.Company) 
    .Include(i => i.ListPeriods.Select(lp => lp.PeriodType)) 
    .Select(i => new 
    { 
     CompanyTitle = i.CompanyId + "/" + i.Company.CompanyName, 
     PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName) 
    }) 
    .ToList(); 
相關問題