Intersección personalizada en lambda

Me gustaría saber si esto es posible resolverlo usando una expresión lambda:

List<Foo> listOne = service.GetListOne();
List<Foo> listTwo = service.GetListTwo();
List<Foo> result = new List<Foo>();

foreach(var one in listOne)
{
    foreach(var two in listTwo)
    {
        if((one.Id == two.Id) && one.someKey != two.someKey)
           result.Add(one);
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta