c# - 在 linq 查询 c# 中使用条件语句
问题描述
我有 2 个查询。如果委员会有超过 1 名成员,则首先获得委员会负责人的全名。
var result = await db.ExpertCommittees
.Where(f => f.Id == committeeId)
.Where(f => f.ExpertCommitteeMembers.Count > 1)
.Select(f => f.ExpertCommitteeMembers
.Where(m => m.IsCommitteeHead)
.FirstOrDefault().Expert.FullName)
.FirstOrDefaultAsync();
如果委员会只有 1 名成员,则第二个获得唯一委员会成员的全名
var result2 = await db.ExpertCommittees
.Where(f => f.Id == committeeId)
.Where(f => f.ExpertCommitteeMembers.Count == 1)
.Select(f => f.ExpertCommitteeMembers
.FirstOrDefault().Expert.FullName)
.FirstOrDefaultAsync();
是否可以检查委员会有多少成员,然后在同一个查询中返回正确的名称?还是我必须首先检查委员会有多少成员,然后单独运行适当的查询?
解决方案
如果我理解正确,您可以尝试让条件进入内部 linqwhere
var result = await db.ExpertCommittees
.Where(f => f.Id == committeeId)
.Select(f => f.ExpertCommitteeMembers.Where(m =>
(m.IsCommitteeHead &&
f.ExpertCommitteeMembers.Count > 1)||f.ExpertCommitteeMembers.Count == 1).FirstOrDefault().Expert.FullName)
.FirstOrDefaultAsync();