2015-02-24 4 views
0

Я новичок в linq и с трудом реализую поиск с использованием двух таблиц, у меня есть хранимая процедура SQL Server, которая работает нормально, но я хочу сделать это с помощью linq, и оба они выглядят очень разными может не в состоянии осуществить подсчет пользователей и содержит Правильно, кто может помочь мне в этом здесь мой SQL, к которому я пытаюсь реализовать в LINQпоиск с использованием linq

@pTeamName Varchar (25) = 'ALL', 
@pUserFirstName Varchar (25) = 'ALL' 
    select 
     t.TeamId,TeamName,[Description], 
     COUNT(u.UserId)as UserCount from Team t 
    left outer join [User] u on u.TeamId=t.TeamId 
    WHERE 
    (t.TeamName Like '%'[email protected]+'%' OR @pTeamName Like 'ALL') 
    AND (u.FirstName = @pUserFirstName OR @pUserFirstName Like 'ALL') 
    AND t.Deleted = 0 
    group by 
    TeamName, 
    [Description], 
    t.TeamId 

и вот мой LINQ, что я до сих пор

from t in Teams 
join u in Users on t.TeamId equals u.TeamId 
where t.TeamName.Contains("Tester") 
select new {t.TeamName,t.Description,u.UserId} 
+0

Это может помочь: HTTP: //stackoverflow.com/questions/27730575/linq-to-sql-left-outer-join -with-group-by-and-having-clause –

+0

сэр, пожалуйста, дайте мне пример – Miranda

ответ

0

Вы можете попробовать вот так,

var result = from t in Teams 
    join u in Users on t.TeamId equals u.TeamId into j1 
    where (t.TeamName.Contains("Tester") || t.TeamName.Contains("ALL")) && (u.FirstName.Contains("username") || u.FirstName.Contains("ALL")) && t.Deleted = 0 
    from j2 in j1.DefaultIfEmpty() 
    Group j2 by new 
    { 
     t.TeamName, 
     t.Description, 
     t.TeamID, 
     } into gcs 
    select new {TeamName = gcs.key.TeamName,Description = gcs.Key.Description,Count = gcs.Count(x=>x.UserId)} 

Не тестировался может проверить наличие ошибок синтаксиса

+0

Спасибо за ваш ответ, да, я получаю некоторую ошибку синтаксиса – Miranda

+0

Я не знаком, не могли бы вы помочь – Miranda

+0

Можете ли вы поместить некоторые данные и ожидаемые выходные данные, о которых идет речь, поэтому я могу дать вам точное выражение. –

Смежные вопросы