我有一个带有数据的类"A"对象。我需要根据以下条件进行过滤。
class A
{
public Guid Id { get; set; }
public String name { get; set; }
public Bool Status{ get; set; }
[ForeignKey("AddressId")]
public virtual List<B> AddressDetails { get; set; }
}
class B
{
public Guid AddressId { get; set;}
public String Area{ get; set; }
public Bool AreaStatus{ get; set;}
}
条件
Class a.Status=True and
Class b.AreaStatus= True
注意:多个类"B"分配给单个类"A"。我需要返回 A 类对象,其中所有 b 类多数据都关联为 areastatus true
如何使用 linq 而不是 foreach 过滤类"A"对象中的数据并获取数据。
这对你有用吗?
list.Where(x =>x.Status).SelectMany(y=>y.AddressDetails.Where(z=>z.AreaStatus)).ToList();
其中列表是"A"的集合,首先基于"A"状态进行过滤,然后基于AreaStatus为true的所有B对象
如果我正确理解了您的问题,我假设您有一个List<A>
,并且正在寻找所有AddressDetails
条目,其中父类A
的Status
也为真AreaStatus = true
:
List<A> _listA = [...] // your data
IEnumerable<B> filteredData = _listA.Where(x => x.Status)
.SelectMany(x => x.AddressDetails)
.Where(x => x.AreaStatus);
但是,如果您尝试查找至少具有一个AreaStatus = true
的所有A
实例,这将完成:
IEnumerable<A> filteredData2 = _listA.Where(x => x.Status &&
x.AddressDetails.Any(y => y.AreaStatus));