Skip to main content
 首页 » 编程设计

.net中当我们对子列表应用条件时,如何过滤父列表>

2025年02月15日112rubylouvre

当我们在子列表上应用条件时如何过滤父列表<>?

public class VendorEntities 
{ 
    public int VendorId { get; set; }      
    public string VendorName { get; set; } 
    public List<ItemEntities> ItemDealdetails { get; set; }     
} 
 
public class ItemEntities 
{ 
    public int ItemId { get; set; } 
    public string ItemName { get; set; } 
    public int TenantId { get; set; } 
} 
 
List<VendorEntities> objVenderList = new List<VendorEntities>(); 
objVenderList = objVendorBL.GetVendorName(); 
 
var rList = (from a in objVenderList 
             from b in a.ItemDealdetails 
             where b.ItemName.Contains("Computer") 
             orderby a.VendorName descending 
             select a).ToList().Distinct(); 

现在我想搜索 ItemName 包含 Computer 的供应商,该供应商存储在子列表 ItemEntities 中。我怎样才能做到这一点?请给我一些建议。

请您参考如下方法:

您可以使用Enumerable.Any :

var rList = objVenderList 
        .Where(v => v.ItemDealdetails.Any(d => d.ItemName.Contains("Computer"))) 
        .OrderByDescending(v => v.VendorName) 
        .ToList(); 

请注意,我省略了您的 Distinct因为它只会删除重复的引用,直到您还没有实现 IEquatable<T>或覆盖Equals + GetHashCode

这里的查询语法相同:

var filteredByItemNameComputer =  
    from vendor in objVenderList 
    where vendor.ItemDealdetails.Any(d => d.ItemName.Contains("Computer")) 
    orderby  vendor.VendorName descending 
    select vendor; 
var rList=filteredByItemNameComputer.ToList();