linq lambda 我如何查询子属性列表和 return 父属性
linq lamba how can i query a list of child properties and return the parent
考虑以下查询:
我有以下结构:
Member
{
public Guid ID
public string Name
public virtual ICollection<MemberCategory> MemberCategories { get; set; }
}
MemberCategory
{
public Guid TribunalMemberID
public DateTime? AppointedFrom { get; set; }
public DateTime? ExpiresOn { get; set; }
}
我希望能够列出匹配该查询的所有成员的所有姓名,我想我需要使用 SelectMany
但我可以计算出代码。
我试过这个的变体:
(Members
是Member
的集合)
public IDictionary<Guid, string> Options => Members.
.SelectMany(tm => tm.MemberCategories)
.Where(tmc => tmc.AppointedFrom <= DateTime.Today && tmc.ExpiresOn > DateTime.Today)
.ToDictionary(tm => tm.ID, t => $"{tm.Name}");
但我不明白如何查询成员列表中的集合以返回成员列表以查看匹配的内容。
理想情况下,我想要 return 会员 ID 和姓名
我希望这是有道理的。
有人可以帮忙吗?
您可以使用 .Any()
方法实现此目的
var collection = members.Where(x =>
x.MemberCategories.Any(tmc => tmc.AppointedFrom <= DateTime.Today && tmc.ExpiresOn > DateTime.Today))
ToList();
考虑以下查询:
我有以下结构:
Member
{
public Guid ID
public string Name
public virtual ICollection<MemberCategory> MemberCategories { get; set; }
}
MemberCategory
{
public Guid TribunalMemberID
public DateTime? AppointedFrom { get; set; }
public DateTime? ExpiresOn { get; set; }
}
我希望能够列出匹配该查询的所有成员的所有姓名,我想我需要使用 SelectMany
但我可以计算出代码。
我试过这个的变体:
(Members
是Member
的集合)
public IDictionary<Guid, string> Options => Members.
.SelectMany(tm => tm.MemberCategories)
.Where(tmc => tmc.AppointedFrom <= DateTime.Today && tmc.ExpiresOn > DateTime.Today)
.ToDictionary(tm => tm.ID, t => $"{tm.Name}");
但我不明白如何查询成员列表中的集合以返回成员列表以查看匹配的内容。
理想情况下,我想要 return 会员 ID 和姓名
我希望这是有道理的。 有人可以帮忙吗?
您可以使用 .Any()
方法实现此目的
var collection = members.Where(x =>
x.MemberCategories.Any(tmc => tmc.AppointedFrom <= DateTime.Today && tmc.ExpiresOn > DateTime.Today))
ToList();