我似乎无法弄清楚如何使用lambda表达式在Linq中进行完全外连接。这是我试图做的一个简单的样本。
void Main()
{
var myPets = new List<petInfo>();
var yourpets = new List<petInfo>();
myPets.Add(new petInfo("me", "dog","Rex"));
myPets.Add(new petInfo("me", "fish","Goldy"));
myPets.Add(new petInfo("me", "iguana","Spikey"));
yourpets.Add(new petInfo("you", "dog","Spot"));
yourpets.Add(new petInfo("you", "cat","Tigger"));
yourpets.Add(new petInfo("you", "bird","Polly"));
var ourPets = myPets.GroupJoin(yourpets, mine => mine.PetType, yours => yours.PetType, (mine, yours) => new { WHAT GOES HERE???});
}
其中petInfo是一个无聊的类:
public class petInfo
{
public string Owner;
public string PetType;
public string PetName;
public petInfo(string owner, string petType, string petName)
{
Owner = owner;
PetType = petType;
PetName = petName;
}
}
我希望myPets在外部联接之后有以下记录:
PetType MyOwnerName MyPetName YourOwnerName YourPetName
bird you Polly
cat you Tigger
dog me Rex you Spot
fish me Goldy
iguana me Spikey
我用linq和lambda想出了几乎所有其他东西,但由于某些原因,连接引起了各种各样的悲伤。我通常最终只是在两组上循环并手动创建第三组,但我已经决定要一劳永逸地解决这个问题。我在这里找到的所有例子似乎都有点过时或者都有针对这个问题的要求。我还没有找到一个很好的基本lambda外连接。
编辑我已经查看了引用的解决方案,并希望在不使用扩展方法的情况下实现它,如果可能的话。如果它不可能,那么我会这样做,但我喜欢linq和lambda,因为代码非常干净而且感觉这应该能够更简单地完成方式。