I'm trying to write in C# a query with left join using Lambda Expression.
How can i get the wanted SQL query when i have a filter in the joined table.
I mean without subquery, with multiple verifications on 'ON' statement
public class Article
{
     public int Id { get; set; }
     public string ArticleName { get; set; }
     // EF navigation property 
     public ICollection<UserArticleNames> UserArticleNames { get; set; }
}
public class User
{
    public int Id { get; set; }
    public string UserName { get; set; }
}
public class UserArticleName
{
     // FK Users
     public int UserId { get; set; }
     // FK Articles
     public int ArticleId { get; set; }
     public int UserArticleName { get; set; }
}
EF - LINQ query via navigation property: (get Articles for an user)
var join = context.Articles
    .SelectMany(a => a.UserArticleNames
        .Where(ua => ua.UserId == 1)
        .DefaultIfEmpty(), (a, ua) => new {
            Id = a.Id,
            ArticleName = a.ArticleName ,
            UserArticleName = ua.UserArticleName,
        }
    );
Resulting SQL code:
SELECT [a].[Id],
       [a.ArticleName],
       [ua].[UserArticleName]
FROM [dbo].[Articles] AS [a]
LEFT JOIN (
    SELECT [a0].[UserId],
          [a0].[ArticleId],
          [a0].[UserArticleName],
   FROM [dbo].[UserArticleName] AS [a0]
   WHERE [a0].[UserId] = 1
) AS [ua] ON [a].[Id] = [ua].[Id]
Wanted SQL code:
SELECT [a].[Id],
       [a.ArticleName],
       [ua].[UserArticleName]
FROM [dbo].[Articles] AS [a]
LEFT JOIN [dbo].[UserArticleName] AS [ua]
    ON [a].[Id] = [ua].[Id] AND [ua].[UserId] = 1