2012-01-18 2 views
0

У меня есть 3, где положение в LINQ, но его недостаток - я попробовал этоИмея 3, где положение в LINQ

List<string> companies = new List<string>() { "0001001429"}; 
List<string> roleIDs = new List<string>() { "1486334", "1419282"}; 


var q = (from up in UserReports 
     where up.UserType == "Internal"  
     where companies.Contains(up.CompanyId) && roleIDs.Contains(up.RoleId) 
          select new 
          { 
           UserId = up.UserId, 
           FirstName = up.FirstName, 
           LastName = up.LastName, ...}); 

Я также попытался иметь 2 присоединяется -

var q = (from up in UserReports 
          join c in companies on up.CompanyID equals c 
          join r in rolesIDs on up.RoleId equals r 
          where up.UserType == "Internal" 
          select new 
          { 
           UserId = up.UserId,..}); 

Что я делаю Неправильно здесь?

С уважением, Bhavik

+1

неудачу ... Вы могли бы быть немного точнее в той части, – V4Vendetta

+0

Неудача, как в ее не компиляции ни ее дающих результатов. – whihathac

ответ

2

Попробуйте это. Я изменил «где» с «и»

var q = (from up in UserReports 
    where up.UserType == "Internal"  
    && companies.Contains(up.CompanyId) && roleIDs.Contains(up.RoleId) 
         select new 
         { 
          UserId = up.UserId, 
          FirstName = up.FirstName, 
          LastName = up.LastName, ...}); 

И вам нужно указать идентификатор компании и роли:

var q = (from up in UserReports 
         join c in companies on up.CompanyID equals c.Id 
         join r in rolesIDs on up.RoleId equals r.Id 
         where up.UserType == "Internal" 
         select new 
         { 
          UserId = up.UserId,..}); 
+0

Для 1-го ответа я получаю следующую ошибку: делегат 'System.Func ' не принимает 1 аргументы, которые я скопировал. Где дважды по ошибке в вопросе :) Позвольте мне попробовать второе решение. Что из вышеперечисленного лучше? с точки зрения производительности. – whihathac

+0

Первый будет скомпилирован как предложение 'IN' sql, я думаю, он будет лучшим. – ivowiblo