У меня есть следующий словарь:LINQ с использованием .ToDictionary без .select
Dictionary<string, string> clauses = new Dictionary<string, string>();
где положения, как это:
"A|B" - "some text"
"A|D|E" - "some text"
"G" - "some text"
"E|A" - "some text"
...
, и я хочу, чтобы заполнить ниже словарь:
Dictionary<string, int> columnsBitMap = new Dictionary<string, int>();
, где значения string
являются уникальными letters
первых строк словаря и 01 Значениявычисляются по математической формуле.
У меня есть следующее, который работает отлично:
columnsBitMap = String.Join("|", clauses.Select(clause => clause).Select(clause => clause.Key)).Split('|')
.Distinct().OrderBy(column => column)
-- can I remove the next Select ?
.Select((column, index) => new KeyValuePair<string, int>(column, index))
.ToDictionary(column => column.Key, column => Convert.ToInt32(Math.Pow(2, column.Value)));
, но мне интересно, если это может быть упрощено удалением .Select
части?
Результат должен быть таким:
A 1
B 2
D 4
E 8
G 16
я предполагаю, что при условии ввода довольно ясно, могли бы вы пожалуйста обеспечить эквивалент пример желаемого результата? Я не уверен, правильно ли получил описание ... thx – nozzleman
@nozzleman Я добавил outpu. – gotqn