Get first DateTime by given weekdays and a starttime
After some fresh air I think I got around my mental blockade. I simply convert to the natural C# DayOfWeek representation beforehand instead of fiddling around with the other one.

public static IEnumerable&lt;DayOfWeek&gt; ConvertDaysOfWeek( int[] daysOfWeekIds )
    =&gt; daysOfWeekIds.Select( x =&gt; x == 7 ? DayOfWeek.Sunday : (DayOfWeek)x );

public static DateTime GetNext( IEnumerable&lt;DayOfWeek&gt; daysOfWeek , TimeSpan startTime )
{
    var nextDate = DateTime.Now.Date;
    var isToday = daysOfWeek.Contains( nextDate.DayOfWeek ) &amp;&amp; DateTime.Now.TimeOfDay &lt; startTime;

    if( !isToday )
        nextDate = Enumerable.Range( 1 , 7 )
            .Select( x =&gt; nextDate.AddDays( x ) )
            .First( x =&gt; daysOfWeek.Contains( x.DayOfWeek ) );

    return nextDate.Add( startTime );
}