Вот довольно понятная версия, использующая синтаксис метода:
IEnumerable<JoinPair> outerLeft =
lefts.SelectMany(l =>
rights.Where(r => l.Key == r.Key)
.DefaultIfEmpty(new Item())
.Select(r => new JoinPair { LeftId = l.Id, RightId = r.Id }));
Мое понимание - то, что это не легко вообще сделать перекрестный браузер. Вместо того, чтобы пытаться управлять управлением флажком, Вы могли всегда создавать свою собственную реализацию с помощью изображений, JavaScript и скрытых полей ввода. Я предполагаю, что это подобно тому, что niceforms (из ответа Staicu lonut's выше), но не были бы особенно трудными реализовать. Я полагаю, что jQuery имеет плагин для обеспечения этого пользовательского поведения также (будет искать ссылку и отправлять здесь, если я могу найти его).
Вы можете увеличить размеры флажков в Safari - что обычно не соответствует обычным подходам - с помощью этого атрибута: -webkit-transform: scale (1.3, 1.3);