2012-12-30 55 views
1

我有一個Linq查詢從數據庫中提取數據。問題是我正在使用「any」來找出如果用戶有一個角色是在api角色表中。查詢如下,它使用虛擬數據;但每當我對數據庫運行查詢時,我都會收到本地序列不能用於除Contains運算符以外的查詢運算符的LINQ to SQL實現。如何替換任何Linq

_apiRepository.GetQueryable<ApiInstance>() .SelectMany(apiInstance => apiInstance.ApiInstanceRoles) .Where(apiInstanceRole => CurrentUser.UsersInRoles.Any(cr => cr.RoleId == apiInstanceRole.RoleId))

+0

@JohanLarsson:'Contains'需要一個對象,而不是謂語... – MarcinJuraszek

回答

2

嘗試用Contains重寫查詢,例如:

_apiRepository 
    .GetQueryable<ApiInstance>() 
    .SelectMany(apiInstance => apiInstance.ApiInstanceRoles) 
    .Where(apiInstanceRole => CurrentUser 
     .UsersInRoles 
     .Select(cr =>cr.RoleId) 
     .Contains(apiInstanceRole.RoleId)) 
+0

首先查詢看起來OK。第二個不起作用的ApiInstanceRole和UserInRole類型不一樣。 –

+0

@GeorgeJove謝謝!我刪除了不起作用的部分答案。 – dasblinkenlight