首页 > 解决方案 > 在 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();

是否可以检查委员会有多少成员,然后在同一个查询中返回正确的名称?还是我必须首先检查委员会有多少成员,然后单独运行适当的查询?

标签: c#linqif-statementconditional-statements

解决方案


如果我理解正确,您可以尝试让条件进入内部 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();

推荐阅读