2016-08-03 71 views
0

使用的UnitOfWork庫模式,我可以使用訪問的參考:庫模式上的多重選擇器

var tmp = unitOfWork.Repository<User>().Queryable(); 

我想查詢表,並恢復了帳戶,ACCOUNTID是一個長:

result = a.Any(e => e.AccountId == AccountId); 

這爲我提供了帳戶記錄的帳戶記錄。

我也有一個表格叫做電子郵件鏈接到帳戶表。所以我現在要更新上面下面的查詢:

result = a.Any(e => 
    e.AccountId == AccountId && 
    e.Email.EmailID == EmailID 
); 

EMAILID是一個漫長的。現在應該爲特定的用戶帳戶提供特定的電子郵件。

我得到的是:

Operator '&&' cannot be applied to operands of type 'bool' and 'User' 
+0

你可以重新解釋一下這個問題嗎?我不明白1)什麼「看看有沒有記錄存在Table1和Table2哪裏符合標準」的意思; 2)第一個表達式中的「a」與第一個表達式中的「tmp」有什麼關係? 'a'是'IQueryable '? 3)'Table2'似乎是'Table1'裏面的一個集合? – Groo

+0

我們可以看到你的實體嗎(這不是委婉說法)? –

+0

我不認爲你需要。 Table用戶具有主鍵AccountId作爲long,Table Email具有指向該字段的鏈接,稱爲AccountId並且具有稱爲EmailID的主鍵,該主鍵也是長的。所以Iqueryable接口正在比較這些字段。 – gilesrpa

回答

0

我發現,如果我用它爲我的作品則按照以下規定你的病情。

Result = searchQuery.Any(e => 
        e.AccountId == AccountId && 
        e.Email.Any(f => f.Id == EmailId); 
0

目前尚不清楚你想要什麼,但

var tmp = unitOfWork.Repository<User>().Queryable(); 

應該給你IQueryable<User>上,你可以申請Where條件,但你會得到結果的User集合或對象。

unitOfWork.Repository<User>().Queryable().Where(e => 
    e.AccountId == AccountId && 
    e.Email.EmailID == EmailID 
); 

如果你想Email您應該加載EmailUser對象之上或 unitOfWork.Repository<Email>().Queryable();