score:1

Accepted answer
var result = (from a in allteams
              join m in modifiedteams on a.id equals m.id into mj
              from m in mj.defaultifempty()
              select new [] { m?.driver?.driverid ?? a.driver?.driverid, 
                              m?.codriver?.driverid ?? a.codriver?.driverid
              }).selectmany(i => i).tolist();

score:0

public static void kvyq()
            {
                list<team> modifiedteams = new list<team>() {
                    new team() {
                        id="t1"
                        ,driver=new driver() {
                            driverid="d2"
                        }
                        ,codriver=new driver() {
                            driverid="c1"
                        }
                    }
                    ,new team() {
                        id="t2"
                        ,driver=new driver() {
                            driverid="d1"
                        }
                    }
                };

                list<team> allteams = new list<team>() {
                    new team() {
                        id="t1"
                        ,driver=new driver() {
                            driverid="d1"
                        }
                        ,codriver=new driver() {
                            driverid="c1"
                        }
                    }
                    ,new team() {
                        id="t2"
                        ,driver=new driver() {
                            driverid="d2"
                        }
                        ,codriver=new driver() {
                            driverid="c2"
                        }
                    }
                };    

                var driverdetails = modifiedteams.select(x => new team()
                {
                    driver = x.driver,
                    codriver = x.codriver

                });

                foreach (var item in driverdetails)
                {
                    driver d = (item.driver == null) ? allteams.select(x => x.driver).firstordefault() : item.driver;
                    driver c = (item.codriver == null) ? allteams.select(x => x.codriver).firstordefault() : item.codriver;
                    console.writeline(d.driverid + " " + c.driverid);
                    //{d2,c1}
                    //{d1,c1}
                }


            }

score:0

public static ienumerable<string> toids(this ienumerable<string> teamids,
   ienumerable<team> modifiedteams, ienumerable<team> allteams)
{
    var modifiedteamslookup = modifiedteams.todictionary(team => team.id);
    var allteamslookup = allteams.todictionary(team => team.id);

    return teamids
        .selectmany(teamid => teamid.todriverids(modifiedteamslookup,
            allteamslookup);

}

Related Query

More Query from same tag