Добавление двух разделенных запятыми датированных ячеек в словарь в C# - PullRequest
0 голосов
/ 18 марта 2020

У меня есть таблица данных, в которой я в настоящий момент храню значения, например:

string actualprodrow = "PRODUCT";
string actualprod = (from DataRow dr in wafercond.Rows where (string)dr["Parameter"] == actualprodrow select Convert.ToString(dr["Value"])).FirstOrDefault();

Так как порядок терминов в таблице может измениться, я ищу данный термин и затем сохраняю стоимость за указанный срок. В последнее время возникла необходимость хранить два разных списка, разделенных запятыми, в этой таблице, которые мне нужно хранить и связывать вместе. Две подходящие строки в таблице выглядят следующим образом:

enter image description here

Мне нужно сохранить значения таким образом, чтобы операция 12348 была связана с смещение 10, а 84321 связано со смещением -20. Я знаю, что должен хранить их в словаре, где ключом является операция, а смещением - значение, но я пока не нашел способа сделать это. Я знаю, что это должно следовать чему-то в том же духе, что сотрудник прислал из одного из своих проектов:

Dictionary<string, string> offsets = t.Select(item => item.Split(',')).ToDictionary(s => s[0], s => s[1]);

Буду признателен за любую помощь в том, как это сделать.

1 Ответ

1 голос
/ 18 марта 2020

Я не думаю, что хорошо разбираюсь в том, что вы делаете, так что это грубое предположение. Возможно, я сначала получу ваши Операции и поместу их в словарь, затем получу ваши смещения и разделю их на список. L oop thru и с помощью индекса установить значение словаря на основе смещения.

string actualprodrow = "Operation";
string actualprod = (from DataRow dr in wafercond.Rows 
                        where (string)dr["Parameter"] == actualprodrow 
                        select Convert.ToString(dr["Value"])).FirstOrDefault();

var operationDictionary = actualprod.Split(new string[]{","}, StringSplitOptions.RemoveEmptyEntries).ToDictionary(key => key, v => string.Empty);

actualprodrow = "Offset";
actualprod = (from DataRow dr in wafercond.Rows
                     where (string)dr["Parameter"] == actualprodrow
                     select Convert.ToString(dr["Value"])).FirstOrDefault();

var offsetSplit =  actualprod.Split(new string[]{","}, StringSplitOptions.RemoveEmptyEntries).ToList();

for (int i = 0; i < operationDictionary.Keys.Count; i++)
{
    var key = operationDictionary.Keys.ElementAt(i);
    operationDictionary[key] = offsetSplit[i];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...