Можно ли использовать SelectMany () и он ведет себя как левое соединение?
Я пытаюсь свести объект сущности в табличный формат, чтобы я мог использовать его в качестве источника данных для отчета .rdlc. SelectMany () работает как шарм, пока есть дочерний объект, но я хочу видеть все родительские объекты независимо от того, есть ли у них дочерние объекты.
public class Owner
{
public int ownerID { get; set; }
public string ownerName { get; set; }
public List<Pet> pets { get; set; }
}
public class Pet
{
public int petID { get; set; }
public string petName { get; set; }
public string petType { get; set; }
}
public void GetOwners()
{
List<Owner> owners = new List<Owner>();
owners.Add(new Owner{ownerID=1, ownerName="Bobby", pets = null});
owners.Add(new Owner
{
ownerID = 2,
ownerName = "Ricky",
pets = new List<Pet>(){
new Pet{petID=1, petName="Smudge", petType="Cat"},
new Pet{petID=2, petName="Spot", petType="Dog"}}
});
var ownersAndPets = owners.SelectMany(o => o.pets
.Select(p => new { o.ownerName, p.petName }));
}
Это заставит владельцев AndPets выглядеть так:
ownerName = "Ricky", petName = "Smudge"
ownerName = "Ricky", petName = "Spot"
Что мне нужно, это:
ownerName = "Bobby", petName = null
ownerName = "Ricky", petName = "Smudge"
ownerName = "Ricky", petName = "Spot"