Methods to create C# dictionaries, with static keys/values, in fluent notation
This sounds like a good idea but I don't think it is, at least not with the current method names that I agree with @denis are very confusing.

The name KeysToValue should actually be AddValueWithKeys because this is the order of parameters and it better suggests that the first parameter is a value and not a key. KeysToValue sounds like a query that gets something or converts keys to values etc.



I also find the extension should extend the dictionary and not some arbitrary IEnumerable&lt;KeyValuePair&lt;TKey, TValue&gt;&gt; because if it will throw a duplicate key exception, it will be hard to find where it happened and it's of more use if extending a dictionary. If it however extends the IEnumerable then the name should be Concat.

The improved version could look like this:

public static Dictionary&lt;TKey, TValue&gt; AddValueWithKeys&lt;TKey, TValue&gt;(
    this Dictionary&lt;TKey, TValue&gt; dictionary, 
    TValue value, 
    params TKey[] keys)
{
    foreach (var key in keys) dictionary.Add(key, value);
    return dictionary;
}


and is much easier to use as it now requries only a single extension

public static readonly IReadOnlyDictionary&lt;string, string&gt; GroupsForVehicles =
    new Dictionary&lt;string, string&gt;()
        .AddValueWithKeys(RoadVehicles, "Car", "Truck", "Tractor", "Motorcycle");