[英]Compare Two List and return Data from first list based on Ids in Linq C#
var solutionItems = solutionInfoResponse
.Items
.Where(x => solutionInfoResponse
.ProductGroup
.FirstOrDefault(p => productGroupIds.Contains(p.GroupId))
.Items
.Any(it => it.Id == x.ItemId))
.ToList();
在这里,我得到的FirstProduct
组List
仅存在于ProductGroupsIds
中,因此我希望所有产品组都具有相同的条件。 请帮我。
这里
public class ProductGroup
{
public string GroupId { get; set; }
public List<ProductGroupItem> Items { get; set; }
}
和
public class ProductGroupItem
{
public string Id { get; set; }
public string Description { get; set; }
}
和
public class SolutionItem
{
public string ItemId { get; set; }
}
最后
public class SolutionInfoResponse
{
public List<SolutionItem> Items { get; set; }
public SolutionInfo SolutionInfo { get; set; }
public List<ProductGroup> ProductGroup { get; set; }
}
如果同一项目可能在多个组中,我们不应该使用FirstOrDefault
而是使用Where
。 我们获取所有此类组,然后检查是否有任何groupItem
具有所需的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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.