我正在嘗試將功能添加到我的搜索頁面。基本上,如果某個條件爲真(基於與另一個表的連接),則應用一些CSS類。這裏是我(簡化)型號:無法投射左連接
MyTable
int Key
string Someinfo1
string Someinfo2
string CssClass
SomeTable
int Key
string CssClass
使用LINQ,我想加入這兩個表,並指定SearchResult.CssClass = SomeTable.CssClass
。實際上,這項任務有一些邏輯。
var test = db.MyTable
.GroupJoin(db.SomeTable,
m => m.Key,
s => s.Key,
(m, s) => new {m, s})
.SelectMany(x => x.h.DefaultIfEmpty(),
(x, y) => new MyTable
{
Key = x.m.Key,
Someinfo1 = x.m.Someinfo1,
Someinfo2 = x.m.Someinfo2,
CssClass = y.CssClass
}
此代碼中斷,給錯誤
The entity or complex type 'MyTable' cannot be constructed in a LINQ to Entities query.
如果我簡單地改變鑄造(x, y) => new MyTable
創建一個匿名類型(x, y) => new
那麼事情的工作我如何指望他們。儘管如此,我需要輸入MyTable
才能與當前存在的視圖兼容。爲什麼它在嘗試投射時破裂,否則它工作正常?在事實之後投射也不起作用。在此先感謝
編輯:爲了澄清,MyTable
映射到一個數據庫表,但CssClass
的例外。我已經配置EF忽略元件
modelBuilder.Entity<MyTable>().Ignore(m => m.CssClass);
爲MyTable.CssClass
期望值來自SomeTable
。
DefaultIfEmpty()被用於包括在MyTable
所有條目。存在情況下,密鑰在MyTable
存在,但不是SomeTable
我在閱讀本文時遇到了一些麻煩。您是否打算在兩個表上進行組連接,然後將其重新映射到其中一個表的對象中?因爲你正在查詢'db.MyTable',然後選擇一個類型爲MyTable的對象。 – IronMan84 2013-03-18 17:46:03
另外,什麼是'x.h.DefaultIfEmpty'? 'h'與它有什麼關係? – IronMan84 2013-03-18 17:47:06
在問題的底部添加了一些信息。希望有幫助 – Jeff 2013-03-18 17:51:22