Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 5
1

Задать словарь, чтобы статистика по "aspetrov" присваивалась статистике "Artem.Petrov"

15.07.2014, 12:22. Показов 672. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа, которая выгружает статистику для группы пользователей с логинами типа "aspetrov"

При этом есть другая группа тех же самых пользоваелей, только их логин построен по типу "Artem.Petrov"

Нужно задать словарь, чтобы статистика по "aspetrov" присваивалась статистике "Artem.Petrov"

Проще говоря, данные для "aspetrov" = данные для "Artem.Petrov"

Дайте шаблон такого словаря..вот именно такого.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2014, 12:22
Ответы с готовыми решениями:

Объекты в VBA. Как сделать так, чтобы объекту присваивалась копия объекта, а не ссылка на него?
У меня есть пользовательский класс XYPoint, определяющий точки на плоскости, который выглядит так:...

Задача по статистике для data science - статистика, гипотеза, интервал, нормальное разпределение, т-распределение
Народ, помогите чайнику, плз, я уже плыву совсем :( Компания теряет по 20 часов в год на каждого...

Можно ли создать словарь в словаре и чтобы каждый словарь вызывался по ключу?
Ребят, всем привет) Подскажите, можно ли создать словарь в словаре? Например, пишу рецепт торта....

Словарь из имени пользователя и сумма за ним закрепленная, создаем новый пустой словарь , чтобы туда сохранить изменения
UserName = {'Vasya':500, 'Misha':500, 'Kolya':500, 'Petya':500, 'Oleg':500} new_Users ={} ...

4
Эксперт Python
4632 / 2050 / 361
Регистрация: 17.03.2012
Сообщений: 10,133
Записей в блоге: 6
16.07.2014, 07:59 2
При чём тут WPF?
Вам нужен не какой-то особенный словарь, вам просто нужна функция перевода одного логина в другой.
Причём такой функции не существует, потому что "aspetrov" перевести в "Artem.Petrov" невозможно, т. к. нет "хвоста" имени, а обратно - потому что нет буквы отчества.
Способ 1 - задать отображение вручную, через другой словарь. Способ 2 - задать отображение с помощью перебора.
1
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 5
16.07.2014, 10:08  [ТС] 3
Ну ок.
А можете написать шаблон отображения на примере нескольких имен такого типа?

В том виде, котором она в коде будет
0
Эксперт Python
4632 / 2050 / 361
Регистрация: 17.03.2012
Сообщений: 10,133
Записей в блоге: 6
16.07.2014, 10:11 4
Тут зависит от вашего любимого способа хранения данных. В коде это писать имена смысла нет, так что - текстовый файл или БД.
1
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 5
22.07.2014, 12:09  [ТС] 5
Excel-файл.

В один столбик там логины типа "aspetrov"
В соседнем - логины типа "Artem.Petrov", для тех же людей.

Программы выгружает статистику из БД, где пользователи заведены по первому типу.
И сохраняет её в Excel.
Также, программа выгружает данные ДЛЯ ТЕХ ЖЕ пользователей из другой БД, где они заведены по второму типу.
А отображать данные из второй БД в Excel не хочет.

Нужно, чтоб хотела.

Фрагмент отображения в Excel прикладываю:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
protected void SaveToExcel(Dictionary<string, List<ReportItem>> ReportItems)
        {
            string filename = @"C:\1\Таблица утилизации2.xlsx";
            Microsoft.Office.Interop.Excel.Application ap = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook wb = ap.Workbooks.Open(filename);
 
            HashSet<string> users = new HashSet<string>();
 
            // Читаем настройки
            Microsoft.Office.Interop.Excel.Worksheet wssettings = wb.Sheets["settings"] as Microsoft.Office.Interop.Excel.Worksheet;
            Microsoft.Office.Interop.Excel.Range range = wssettings.Range["C1",String.Format("C{0}", wssettings.UsedRange.Rows.Count)];
 
            Dictionary<string, string> dic = new Dictionary<string, string>();
          
 
            foreach (object ob in range.Value)
            {
                if (ob != null)
                {
                    if (!users.Contains(ob.ToString()))
                    {
                        users.Add(ob.ToString());
                    }
                }
            }
            Marshal.ReleaseComObject(wssettings);
        
            Microsoft.Office.Interop.Excel.Worksheet wstemplate = wb.Sheets["template"] as Microsoft.Office.Interop.Excel.Worksheet;
            // Чистим предыдущие результаты
            foreach(string user in ReportItems.Keys )
            {
                if( !users.Contains(user) )
                {
                    continue;
                }
                Console.WriteLine("User:{0} added", user);
                Microsoft.Office.Interop.Excel.Worksheet wsnew;// = wb.Sheets.Add();
                wstemplate.Copy(Missing.Value, wstemplate);
                wsnew = wb.Sheets[wstemplate.Index + 1];
                //wstemplate.Copy(wsnew);
                wsnew.Name = user;
                // Копируем необходимые строки из Template
                Microsoft.Office.Interop.Excel.Range sourcerange;// = wstemplate.Range["A1", String.Format("K2")];
                Microsoft.Office.Interop.Excel.Range targetrange;// = wsnew.Range["A1", String.Format("K2")];
 
                //sourcerange.Copy(Type.Missing);
                //targetrange.PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteAll, Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
 
                // Чистим из формулы ссылку на исходную таблицу на шаблонном листе
 
                sourcerange = wsnew.Range["A2", String.Format("R2")];
                //wsnew.UsedRange.
                //targetrange = wsnew.Range["A3", String.Format("K10")];
                //Console.WriteLine("Col count:{0}", wsnew.UsedRange.Columns.Count);
                //Console.WriteLine("Row count:{0}", wsnew.UsedRange.Rows.Count);
                //wsnew.Cells[50, 50] = 1;
                
                string sttarget = String.Format("R{0}", ReportItems[user].Count + 1);
                targetrange = wsnew.Range["A3", sttarget];
                sourcerange.Copy(targetrange);
                //targetrange.PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteAll, Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
 
                int i = 2;
                foreach (ReportItem ri in ReportItems[user])
                {
                    targetrange = wsnew.Range[String.Format("A{0}", i), String.Format("J{0}", i)];
                    //sourcerange.Copy(targetrange);
                    //targetrange.PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteAll, Microsoft.Office.Interop.Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
                    //targetrange = wsnew.Range[String.Format("A{0}", i), String.Format("I{0}", i)];
                    targetrange.Value = ri.GetObjects();
                    i++;
                }
 
                Marshal.ReleaseComObject(wsnew);
            }
 
            
            string newfilename = System.IO.Path.ChangeExtension(filename, "") + DateTime.Now.ToString("yyyyMMdd_HHmmss") + System.IO.Path.GetExtension(filename);
            wb.SaveAs(newfilename);
            wb.Close();
            Marshal.ReleaseComObject(wstemplate);
            Marshal.ReleaseComObject(wb);
            ap.Quit();
            Marshal.ReleaseComObject(ap);
        }
 
        private string GetCustomField(jiracrt.RemoteIssue ri, string fieldId)
        {
            string val = "";
            foreach (jiracrt.RemoteCustomFieldValue rcfv in ri.customFieldValues)
            {
                if (rcfv.customfieldId == fieldId)
                {
                    foreach (string value in rcfv.values)
                    {
                        val += ", " + value;
                    }
                    val = val.Substring(2);
                    return val;
                }
            }
            return null;
        }
        private string GetCustomField(jirafss.RemoteIssue ri, string fieldId)
        {
            string val = "";
            foreach (jirafss.RemoteCustomFieldValue rcfv in ri.customFieldValues)
            {
                if (rcfv.customfieldId == fieldId)
                {
                    foreach (string value in rcfv.values)
                    {
                        val += ", " + value;
                    }
                    val = val.Substring(2);
                    return val;
                }
            }
            return null;
        }
        private string GetCustomField(crtnew.RemoteIssue ri, string fieldId)
        {
            string val = "";
            foreach (crtnew.RemoteCustomFieldValue rcfv in ri.customFieldValues)
            {
                if (rcfv.customfieldId == fieldId)
                {
                    foreach (string value in rcfv.values)
                    {
                        val += ", " + value;
                    }
                    val = val.Substring(2);
                    return val;
                }
            }
            return null;
        }
        private void AddReportItem(Dictionary<string, List<ReportItem>> reportitems, ReportItem reportitem)
        {
            if( reportitems.Keys.Contains(reportitem.login) )
            {
                reportitems[reportitem.login].Add(reportitem);
            }
            else
            {
                reportitems.Add(reportitem.login, new List<ReportItem>());
                reportitems[reportitem.login].Add(reportitem);
            }
        }
    }
}
0
22.07.2014, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2014, 12:09
Помогаю со студенческими работами здесь

Задать словарь синонимов для полнотекстового поиска
Суть задачи в том, что нужно найти имена в некотором столбце таблицы, с учётом возможных опечаток....

Как сделать чтоб каждая переменная присваивалась к каждой строке listbox?
Итак, есть textbox1 (с multiline), надо сделать чтоб было наподобие этого: int a =...

Как сделать, чтобы после регистрации на форуме, сразу появлялась статистика в топе?
Здравствуйте . у меня форум SMF . и сервер PVPGN (DOTA) есть статистика игроков и тд....

Как сделать так, чтобы при выполнении команды PING в файл записывалась только статистика?
Как сделать так, что бы выполнении команды: ping ya.ru -n 10 в файл записывалось только статистика?...

Cтруктура такая (группа, фимилия, предмет, оценка)[PROLOG]grade(1,'Petrov','Logical programming',4)
Cтруктура такая (группа, фимилия, предмет, оценка) grade(1,'Petrov','Logical programming',4). ...

Частотный словарь: нужно сделать так, чтобы он был чувствителен к регистру
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; #include...

Как сделать словарь, чтобы можно было добавлять новые слова
Как сделать словарь, чтобы можно было добавлять новые слова. На Делфи.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru