var solutionItems = solutionInfoResponse
.Items
.Where(x => solutionInfoResponse
.ProductGroup
.FirstOrDefault(p => productGroupIds.Contains(p.GroupId))
.Items
.Any(it => it.Id == x.ItemId))
.ToList();
Here I am getting List
of FirstProduct
group only with exist in ProductGroupsIds
, so I want all product group with existing same
condition. Please Help me.
Here
public class ProductGroup
{
public string GroupId { get; set; }
public List<ProductGroupItem> Items { get; set; }
}
and
public class ProductGroupItem
{
public string Id { get; set; }
public string Description { get; set; }
}
and
public class SolutionItem
{
public string ItemId { get; set; }
}
Finally
public class SolutionInfoResponse
{
public List<SolutionItem> Items { get; set; }
public SolutionInfo SolutionInfo { get; set; }
public List<ProductGroup> ProductGroup { get; set; }
}
CodePudding user response:
If it's possible that the same item can be in several groups we should not use FirstOrDefault
but Where
.
We obtain all such groups and then check if there's any groupItem
with required Id
:
var solutionItems = solutionInfoResponse
.Items
.Where(item => solutionInfoResponse
.Groups
.Where(group => productGroupIds.Contains(group.GroupId))
.SelectMany(group => group.Items)
.Any(groupItem => groupItem.Id == item.Id))
.ToList();