score:1

Accepted answer
private internalorgdto getinternalorgdto(departmentchilddto dcdto)
{
    var internalorgid = dcdto.internalorgid 
        ?? findinternalorgid(dcdto.parentdepartmentid) 
        ?? throw new internalorgnotfoundexception();

    internalorgdto iodto = _context.internalorganizations
        .where(x => x.internalorgid == internalorgid.value)
        .select(x => new internalorgdto
        {
            id = x.id,
            abbreviation = x.abbreviation,
            code = x.code,
            description = x.description
        }).single();
    return iodto;
}

private int? findinternalorgid(int? departmentid)
{
    if (!departmentid.hasvalue)
       return (int?) null;

    var details = _context.departments
        .where(x => x.departmentid == departmentid.value)
        .select(x => new 
        { 
            x.internalorgid,
            x.parentdepartmentid
        }).single();
     if (details.internalorgid.hasvalue)
         return details.internalorgid;

     return findinternalorgid(details.parentdepartmentid);
}

Related Query

More Query from same tag