33

Can someone help me to translate this

var query = from s in context.ShoppingMalls
join h in context.Houses
on
new { s.CouncilCode, s.PostCode }
equals
 new { h.CouncilCode, h.PostCode }
select s;

into lambda query?

Thanks.

2 Answers 2

61
var query = context.ShoppingMalls
                   .Join(
                       context.Houses,
                       s => new { s.CouncilCode, s.PostCode },
                       h => new { h.CouncilCode, h.PostCode },
                       (s, h) => s);
Sign up to request clarification or add additional context in comments.

2 Comments

edited to give the anonymous objects keys, so that the compiler can infer that the types are the same.
I don't know where your edit went, but if the names and types aren't the same you can do something like this for both of the join on objects so that the property names match: new { cc = s.CouncilCode, pc = s.PostCode }
23

Although the example and answer given by @Thomas Levesque works for columns that match, I wanted to also supply the answer if you have columns to join on but they have different names. This is what I needed for my googling and this question got me close.

The difference of course is the explicit declaration of the columns as a variable to identify on.

var query = context.MapKitsToResources
              .Join(
                     context.Resources, 
                     o => new { Id = o.ResourceId, Type = o.ResourceTypeId},
                     i => new { Id = i.Id, Type = TypeId},
                     (o, i) = new { rType : i };

2 Comments

Agree with you for explicit give name to joined columns. Great answer.
This is the perfect solution to avoid ambiguity between similar columns and match exact columns

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.