I hope I explained that correctly. I want to add a returned list of objects to a new list of objects based on certain restrictions. The structure for driveFileList is a list of an object which has another List inside. Essentially it is
public record MiscFile(string fileName, string fileId, List<MiscObject2>)
So far what I have tried is
permissionList.AddRange(driveFileList.Select(f => f.Permissions.Where(p => p.Domain == "domainhere.com")));
But I am not sure how to formulate it in a correct way.
I get a type conversion error and if I try an explicit cast it will still throw an exception. Is this possible with a linq expression or should I just change it entirely?
Any help is appreciated.
Thanks!
1条答案
按热度按时间lp0sw83n1#
I'll change this answer if my assumption turns out to be wrong but I think that you want a list of all the child objects that meet certain criteria, regardless of which parent they belong to. In that case, you can use
SelectMany
on the parent. That will get a list of values for each parent and concatenate them all into one list. You can then filter that flattened list:SelectMany
will return a list of all children from all parents, then theWhere
filters that child list.EDIT:
Actually, I just realised that you can have the
Where
outside or inside theSelectMany
. I'm not sure that it would make any practical difference, as you have to check every child either way, but this would work too:That will filter each child list and then concatenate, while the previous code would concatenate the full lists and then filter. This is closer to what you had originally, but the result would be the same and I think the performance should be basically the same too, not that you could notice any different unless the lists were huge.