Comment faire des Jointures dans les requêtes Linq à l'aide de lambda et de l'arborescence d'expression?

Je suis en train de faire une JOINTURE dans Linq en utilisant les expressions lambda ... et en cours d'exécution dans certains problèmes.

J'ai deux entités, des Commentaires et des CommentSources. CommentSources sont associés à des Commentaires. J'ai le code suivant qui fonctionne:

01 IQueryable<Data.Comment> query = ctx.DataContext.Comments;
02
03
04 if (criteria.IsDeleted == DeletedFilter.Deleted)
05    query = query.Where(row => row.DeletedBy != Guid.Empty);
06 else if (criteria.IsDeleted == DeletedFilter.NotDeleted)
07    query = query.Where(row => row.DeletedBy == Guid.Empty);
08
09 var data = query.Select(row => CommentInfo.FetchCommentInfo(row));

J'ai besoin de joindre CommentSources sur des Observations sur le terrain, et je voudrais l'utiliser, si possible, quelque chose comme:

01 query = query.Join(join code goes here)

Comment puis-je faire cela à l'aide de lambda dans l'arborescence d'expression?

Une chose de plus ... comment puis-je ajouter un Où à l'instruction de Jointure?

Au lieu de vous poser une autre question ... comment ferais-je une clause where sur que Rejoindre? Par exemple, j'ai un champ appelé SourceId sur le CommentSource que je voudrais filtrer par.

OriginalL'auteur mattruma | 2008-12-06