public void Adding_Existing_Records_Using_Add_Method_Works() { // create new record instances and use the "Add" method of the record set to add the records _ExistingRecordSet.Add(new Record(_ExistingRecordSet.Schema, new object[] { 1, "Mike" })); _ExistingRecordSet.Add(new Record(_ExistingRecordSet.Schema, new object[] { 2, "Molly" })); Assert.AreEqual(2, _ExistingRecordSet.Count); Assert.AreEqual("Mike", _ExistingRecordSet.Where(r => (int)r["Id"] == 1).Select(r => r["Name"]).First()); Assert.AreEqual("Molly", _ExistingRecordSet.Where(r => (int)r["Id"] == 2).Select(r => r["Name"]).First()); }
public RecordSet Import(Stream stream, EntitySchema entity) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (entity == null) { throw new ArgumentNullException(nameof(entity)); } var calculatedFields = new HashSet <EntityMember>(entity.Members.OfType <EntityCalculatedField>()); var workbook = new XSSFWorkbook(stream); var sheet = workbook.GetSheetAt(0); var headers = GetHeaders(sheet, entity); var recordSet = new RecordSet(); for (int i = 1; i < sheet.PhysicalNumberOfRows; i++) { var record = GetRecord(sheet.GetRow(i), headers, calculatedFields); if (record != null) { recordSet.Add(record); } } return(recordSet); }
public static RecordSet generateRecordSet() { var testRS = new RecordSet(new[] { new RecordSet.Column("id", typeof(int)), new RecordSet.Column("name", typeof(string)), new RecordSet.Column("amount", typeof(decimal)), new RecordSet.Column("added_date", typeof(DateTime)) }); for (int i = 0; i < 100; i++) { testRS.Add(new object[] { i, "Name" + i.ToString(), i % 20, new DateTime(2000, 1, 1).AddMonths(i) }); } return(testRS); }
public PrintDataMessage GenSingleTrayLabel(string trayId, string dateFormat, string[] keepers) { PrintDataMessage pdm = new PrintDataMessage(); ValidateMsg <Trays> msg = TraysHelper.TrayCanPrint(trayId); if (msg.Valid) { List <TrayPackView> tpv = TrayPackViewHelper.GetTPVByTrayIdsGropSumPartNr(new List <string>() { trayId }); string[] dateFormats = dateFormat.Split(','); List <PrintTask> tasks = new List <PrintTask>(); foreach (string keeper in keepers) { RecordSet rs = new RecordSet(); PrintTask task = new PrintTask() { DataSet = rs }; foreach (TrayPackView t in tpv) { RecordData label = new RecordData(); label.Add("TrayId", t.trayId); label.Add("Warehouse", t.warehouse); label.Add("Position", t.position); label.Add("customerPNr", t.customerPartNr); label.Add("PartNr", t.partNr); label.Add("Capa", t.capa.ToString()); label.Add("Keeper", keeper); label.Add("CreateTime", t.createTime.ToString(dateFormats[0])); label.Add("StoreCreateTime", t.createTime.ToString(dateFormats[1])); rs.Add(label); } tasks.Add(task); } pdm.PrintTask = tasks; pdm.ReturnedResult = true; } else { pdm.ReturnedResult = false; pdm.ReturnedMessage.Add(msg.ToString()); } return(pdm); }
public static void BuildRecordSets(IHermesDevice device) { //Загружаем один раз официантов и меню ComReader.BufferMembers = ComReader.GetMembers(); ComReader.BufferMenu = ComReader.GetMenuToBuffer(); //Разбираем меню в массив var xml = new MenuXml(); ComReader.ListMenu = xml.MenuXmlToList(ComReader.BufferMenu); // Append a dictionary to the device which hold's all application specific data if (device.Tag == null) device.Tag = new Dictionary<string, object>(2); var nextId = 0; //Создаем Dictionary для сохранения RecordSet IDictionary<string, RecordSet> recSets = new Dictionary<string, RecordSet>(); #region Строим RecordSet Официанты var list = ComReader.BufferMembers; //BufferMembers.xml список официантов // Recordset всегда!!! основывается на recorddefinition построеном с помощью Orderman Screen Designed. // (Recorddefinition определяют вид и формат записей) // В Sol есть Record-Definition USERS - это официанты RecordDefinition def = device.Resources.RecordDefinitions["USERS"]; //Каждой записи Recordset необходим уникальный ID. Мы просто используем счетчик nextId var usersSet = new RecordSet(nextId++, def, RSET_USERS); //usersSet - официанты; public const string RSET_USERS = "Users"; var name = from p in list.Elements("Элемент") select p; foreach (var p in name) { //Каждый официант - свой Record var rec = new Record(def); rec.Tag = p; //user - это объект со всеми данными типа имя/пароль. Т.е в Tag прячем всю информацию //Заполняем данные для отображения rec.Cells[0].Value = device.Resources.Images[0x0009]; rec.Cells[1].Value = p.Attribute("Наименование").Value; usersSet.Add(rec); } //Добавляем в Dictionary RecordSt официанты recSets.Add(usersSet.Name, usersSet); //usersSet.Name - "Users" #endregion #region Строим RecordSet menu and StringTables recSets = BuildOrderRecordSet(recSets, device, ref nextId); recSets = BuildMenuStringTablesFolder(recSets, device, ref nextId); recSets = BuildMenuStringTablesChildren(recSets, device, ref nextId); #endregion GetDeviceData(device)[RSET_NAME] = recSets; }
void BuildRecordSets() { RecordDefinition recDef = this.Device.Resources.RecordDefinitions["static"]; var sets = new Dictionary<string, RecordSet>(); this.AppData[AppDataElements.RECORDS] = sets; // IMPORTANT --> TAKE CARE THAT EVERY RecordSet has it's unique ID!!! var set1 = new RecordSet(0, recDef, RECORDSET1); sets.Add(set1.Name, set1); // IMPORTANT --> TAKE CARE THAT EVERY RecordSet has it's unique ID!!! var set2 = new RecordSet(1, recDef, RECORDSET2); sets.Add(set2.Name, set2); for (int i = 0; i < 20; i++) { // add new records to the record sets // add to _set1 var rec = new Record(recDef); rec.Cells[0].Value = "item - Set1 - " + (i + 1).ToString(); rec.Tag = i; set1.Add(rec); // add to _set2 rec = new Record(recDef); rec.Cells[0].Value = "item - Set2 - " + (i + 1).ToString(); rec.Tag = i; set2.Add(rec); } // Download the record sets to the device --> than these will be useable to work with lists _pBar.Value = 0; this.Device.Data.Download(set1); _pBar.Value = 50; this.Device.Transmit(); this.Device.Data.Download(set2); _pBar.Value = 100; this.Device.Transmit(); }
public PrintDataMessage GenSingleTrayLabel(string trayId,string dateFormat,string[] keepers) { PrintDataMessage pdm = new PrintDataMessage(); ValidateMsg<Trays> msg = TraysHelper.TrayCanPrint(trayId); if (msg.Valid) { List<TrayPackView> tpv = TrayPackViewHelper.GetTPVByTrayIdsGropSumPartNr(new List<string>() { trayId }); string[] dateFormats = dateFormat.Split(','); List<PrintTask> tasks = new List<PrintTask>(); foreach (string keeper in keepers) { RecordSet rs = new RecordSet(); PrintTask task = new PrintTask() { DataSet = rs }; foreach (TrayPackView t in tpv) { RecordData label = new RecordData(); label.Add("TrayId", t.trayId); label.Add("Warehouse", t.warehouse); label.Add("Position", t.position); label.Add("customerPNr", t.customerPartNr); label.Add("PartNr", t.partNr); label.Add("Capa", t.capa.ToString()); label.Add("Keeper", keeper); label.Add("CreateTime",t.createTime.ToString(dateFormats[0])); label.Add("StoreCreateTime", t.createTime.ToString(dateFormats[1])); rs.Add(label); } tasks.Add(task); } pdm.PrintTask = tasks; pdm.ReturnedResult = true; } else { pdm.ReturnedResult = false; pdm.ReturnedMessage.Add(msg.ToString()); } return pdm; }
public static RecordSet CreateRecords(RecordSet existingRecordSet, RecordSet requestRecordSet) { foreach (var requestRecord in requestRecordSet) { Record newRecord = new Record(existingRecordSet.Schema); for (int i = 0; i < existingRecordSet.Schema.Fields.Count; i++) { Field field = existingRecordSet.Schema.Fields[i]; int requestFieldPosition = requestRecordSet.Schema.Fields.IndexOf(field); if (requestFieldPosition != -1) { newRecord[i] = requestRecord[requestFieldPosition]; } } existingRecordSet.Add(newRecord); } return(existingRecordSet); }
//Строим Recordset для верхнего окна _lstOrders ORDERS //5 наборов черный/зеленый/красный для детей и папок //красный один и тот же //Пока используются только черные 2 набора private static IDictionary<string, RecordSet> BuildOrderRecordSet(IDictionary<string, RecordSet> recSets, IHermesDevice device, ref int nextId) { var def = device.Resources.RecordDefinitions["ORDERS"]; foreach (var q in (RecSets.MarkerOrder[])Enum.GetValues(typeof(RecSets.MarkerOrder))) { var id = 0; foreach (var p in ComReader.ListMenu.Children) { //q + p.Id - строим новые ключи var itemsSet = new RecordSet(nextId++, def, q + p.Id); var itemRec = new Record(def); itemRec.Cells[0].Value = "1"; itemRec.Cells[1].Value = id++; itemRec.Tag = q.ToString() + p.Id; itemRec.TemplateName = q.ToString(); itemsSet.Add(itemRec); try { recSets.Add(itemsSet.Name, itemsSet); } catch (Exception) { var i = "Это дубль"; } } } return recSets; }
public void CrudOperations() { var rs = new RecordSet( new[] { new RecordSet.Column("id", typeof(int)), new RecordSet.Column("name", typeof(string)), new RecordSet.Column("age", typeof(int)) } ); // columns collection Assert.Equal(3, rs.Columns.Count); Assert.Equal(1, rs.Columns.GetOrdinal("name")); Assert.Equal("age", rs.Columns[2].Name); Assert.Equal("name", rs.Columns["name"].Name); Assert.Throws <ArgumentException>(() => { rs.Add(new object[2]); }); Assert.Throws <ArgumentException>(() => { rs.Add(new object[4]); }); Action <int, string, int> addRow = (id, name, age) => { var r = rs.Add(); r["id"] = id; r["name"] = name; r["age"] = age; }; addRow(1, "John", 25); addRow(2, "Mary", 28); addRow(3, "Ray", 32); Assert.Equal(3, rs.Count); Assert.Equal(RecordSet.RowState.Added, rs[0].State & RecordSet.RowState.Added); rs.AcceptChanges(); Assert.Equal(3, rs.Count); Assert.Equal(RecordSet.RowState.Unchanged, rs[0].State); rs[2].Delete(); Assert.Equal(RecordSet.RowState.Deleted, rs[2].State); rs.AcceptChanges(); Assert.Equal(2, rs.Count); // add values array rs.Add(new object[] { 4, "Adam", 45 }); Assert.Equal(3, rs.Count); // add dictionary rs.Add(new Dictionary <string, object>() { { "name", "Gomer" } }); Assert.Equal(4, rs.Count); // typed accessor Assert.Equal("Gomer", rs[3].Field <string>("name")); Assert.Equal(null, rs[3].Field <int?>("age")); Assert.Equal(45, rs[2].Field <int?>("age")); rs[0]["name"] = "Bart"; Assert.Equal(RecordSet.RowState.Modified, rs[0].State & RecordSet.RowState.Modified); rs[0].AcceptChanges(); Assert.Equal(RecordSet.RowState.Unchanged, rs[0].State); Assert.Equal("Bart", rs[0]["name"]); Assert.Throws <ArgumentException>(() => { var t = rs[0]["test"]; }); }
public void RecordSetReader() { var testRS = new RecordSet(new [] { new RecordSet.Column("id", typeof(int)), new RecordSet.Column("name", typeof(string)), new RecordSet.Column("amount", typeof(decimal)), new RecordSet.Column("added_date", typeof(DateTime)) }); for (int i = 0; i < 100; i++) { testRS.Add(new object[] { i, "Name" + i.ToString(), i % 20, new DateTime(2000, 1, 1).AddMonths(i) }); } var rdr = new RecordSetReader(testRS); Assert.True(rdr.HasRows); Assert.Throws <InvalidOperationException>(() => { var o = rdr[0]; }); Assert.True(rdr.Read()); Assert.Equal(4, rdr.FieldCount); Assert.Equal("id", rdr.GetName(0)); Assert.Equal(2, rdr.GetOrdinal("amount")); Assert.Equal("added_date", rdr.GetName(3)); Assert.Throws <IndexOutOfRangeException>(() => { var o = rdr.GetName(4); }); Assert.Equal(0, rdr.GetInt32(0)); Assert.Equal(0, rdr[0]); Assert.Equal("Name0", rdr[1]); Assert.Equal(0, rdr[2]); Assert.Equal(1, rdr.GetDateTime(3).Month); int cnt = 1; while (rdr.Read()) { Assert.Equal(cnt, rdr[0]); cnt++; } Assert.Throws <InvalidOperationException>(() => { var o = rdr[0]; }); rdr.Dispose(); Assert.Throws <InvalidOperationException>(() => { var o = rdr.FieldCount; }); Assert.Throws <InvalidOperationException>(() => { var o = rdr.GetOrdinal("id"); }); Assert.Equal(100, cnt); // read RS from RecordSetReader var testRSCopy = RecordSet.FromReader(new RecordSetReader(testRS)); Assert.Equal(testRS.Count, testRSCopy.Count); Assert.Equal(testRS.Columns.Count, testRSCopy.Columns.Count); // read into initialized RecordSet var newRS = new RecordSet( new[] { new RecordSet.Column("id", typeof(int)), new RecordSet.Column("name", typeof(string)) } ); newRS.Load(new RecordSetReader(testRS)); Assert.Equal(testRS.Count, newRS.Count); Assert.Equal("Name99", newRS[99].Field <string>("name")); }
private IDictionary<string, RecordSet> BuildPrinterTablesRecordSet(IDictionary<string, RecordSet> recSets, IHermesDevice device, ref int nextId) { var def = this.Device.Resources.RecordDefinitions["DropDown"]; var itemsSet = new RecordSet(nextId++, def, "Printers"); var printers = ComReader.GetPrinters(); var pp = printers.Descendants("Принтер"); foreach (var element in pp) { var r = new Record(def); r.Cells[0].Value = Device.Resources.Images[0x002B]; r.Cells[1].Value = element.Attribute("ИмяПринтера").Value; r.Tag = element.Attribute("Идентификатор").Value; itemsSet.Add(r); } recSets.Add(itemsSet.Name, itemsSet); Device.Data.Download(itemsSet); return recSets; }
//Строим группы столов в залах private IDictionary<string, RecordSet> BuildTablesRecordSet(IDictionary<string, RecordSet> recSets, IHermesDevice device, ref int nextId) { var def = device.Resources.RecordDefinitions["TABLES"]; var doc = ComReader.GetTablesRecordSet(); var element = doc.Descendants("Зал"); var xElements = element as XElement[] ?? element.ToArray(); foreach (var p in xElements) { var userSet = new RecordSet(nextId++, def, p.Attribute("Наименование").Value); foreach (var q in p.Descendants("Столы").OrderBy(z => z.Attribute("ИмяСтола").Value)) { var rec = new Record(def); rec.Cells[0].Value = Device.Resources.Images[0x0001]; rec.Cells[1].Value = q.Attribute("ИмяСтола").Value; rec.TemplateName = RecSets.Tables.FREE.ToString(); rec.Tag = q.Attribute("Num").Value; userSet.Add(rec); } recSets.Add(userSet.Name, userSet); } return recSets; }
//Modifier private IDictionary<string, RecordSet> BuildModifiersTablesRecordSet(IDictionary<string, RecordSet> recSets, IHermesDevice device, ref int nextId) { var def = device.Resources.RecordDefinitions["MODIFIER"]; foreach (var p in ComReader.ListMenu.Children.Where(p => p.Modifikators.Any())) { var itemsSet = new RecordSet(nextId++, def, RecSets.Modifier.Modifier.ToString() + p.Id); foreach (var q in p.Modifikators.OrderByDescending(z => z.Value.Required)) { var itemRec = new Record(def); itemRec.Cells[0].Value = Device.Resources.Images[0x0018]; itemRec.Cells[1].Value = q.Value.Name; itemRec.Cells[2].Value = q.Value.Id; itemRec.TemplateName = q.Value.Required == "1" ? "Required" : "NoRequired"; itemsSet.Add(itemRec); } try { recSets.Add(itemsSet.Name, itemsSet); } catch (Exception) { var i = "Это дубль"; } } return recSets; }
private Dictionary<string, RecordSet> BuildMenuModifiersStringTables(Dictionary<string, RecordSet> stringTables, ref int nextId) { var id = 0; var def = RecordDataDefinition.CreateStringTable(); var dishName = new RecordSet(nextId++, def, RecSets.StringTables.Menu.ToString()); stringTables.Add(dishName.Name, dishName); foreach (var p in ComReader.ListMenu.Children) { var textAndId = new Record(def); textAndId.Cells[0].Value = id++; textAndId.Cells[1].Value = p.Name; dishName.Add(textAndId); } //Модификаторы var duplicate = new Dictionary<string, int>(); //dishName = new RecordSet(nextId++, def, RecSets.StringTables.Modifiers.ToString()); foreach (var p in ComReader.ListMenu.Children.Where(p => p.Modifikators.Any())) { foreach (var q in p.Modifikators.OrderByDescending(z => z.Value.Required)) { int user; if (duplicate.TryGetValue(q.Value.Name, out user)) continue; var textAndId = new Record(def); textAndId.Cells[0].Value = id++; textAndId.Cells[1].Value = q.Value.Name; dishName.Add(textAndId); duplicate.Add(q.Value.Name, id); } } return stringTables; }
//Создаем стринг таблицы верхних папок private static IDictionary<string, RecordSet> BuildMenuStringTablesFolder(IDictionary<string, RecordSet> recSets, IHermesDevice device, ref int nextId) { var manuName = new string[3] { "ПИЦЦА", "КУХНЯ", "БАР" }; //def Описывает структуру заданную в редакторе var def = device.Resources.RecordDefinitions["ITEMS-2"]; for (var tab = 0; tab < 3; tab++) { //Создаем запись: nextId - номер записи, guidId - имя присваемое нами var userSet = new RecordSet(nextId++, def, manuName[tab]); var menu = GetXElements(manuName[tab]); foreach (var p in menu) { var rec = new Record(def); var element = p.Element("Наименование"); if (element != null) rec.Cells[0].Value = element.Value; element = p.Element("IdItemName"); if (element != null) rec.Cells[1].Value = element.Value; rec.Cells[2].Value = "This folder!"; rec.TemplateName = "ITEMNAME"; userSet.Add(rec); } //IDictionary<string, RecordSet> - добавляем ее в словарь //itemsSet.Name - это наш guidId recSets.Add(userSet.Name, userSet); } return recSets; }
public static RecordSet SaveRecords(RecordSet existingRecordSet, RecordSet requestRecordSet) { Field keyField = (from f in existingRecordSet.Schema.Fields where f.IsKey == true select f).FirstOrDefault(); if (keyField == null) { throw new Exception("No key field found."); } int keyFieldPosition = existingRecordSet.Schema.Fields.IndexOf(keyField); int requestKeyFieldPosition = requestRecordSet.Schema.Fields.IndexOf(keyField); if (requestKeyFieldPosition == -1) { throw new Exception("Key field in request record set is missing."); } foreach (var requestRecord in requestRecordSet) { object keyValue = requestRecord[requestKeyFieldPosition]; Record changedRecord = (from e in existingRecordSet where e[keyFieldPosition].Equals(keyValue) select e).FirstOrDefault(); if (changedRecord != null) { // it's an existing record -> update it for (int i = 0; i < existingRecordSet.Schema.Fields.Count; i++) { Field field = existingRecordSet.Schema.Fields[i]; int requestFieldPosition = requestRecordSet.Schema.Fields.IndexOf(field); if (requestFieldPosition != -1) { changedRecord[i] = requestRecord[requestFieldPosition]; } } } else { // no existing record found -> create a new one Record newRecord = new Record(existingRecordSet.Schema); for (int i = 0; i < existingRecordSet.Schema.Fields.Count; i++) { Field field = existingRecordSet.Schema.Fields[i]; int requestFieldPosition = requestRecordSet.Schema.Fields.IndexOf(field); if (requestFieldPosition != -1) { newRecord[i] = requestRecord[requestFieldPosition]; } } existingRecordSet.Add(newRecord); } } return(existingRecordSet); }
static void Main(string[] args) { colorHash.Add("R", "Red"); colorHash.Add("Y", "Yellow"); colorHash.Add("Br", "Brown"); colorHash.Add("W", "White"); colorHash.Add("Gr", "Grey"); colorHash.Add("Or", "Orange"); colorHash.Add("B", "Black"); //string pattern = "^SIDE"; //Regex r = new Regex(pattern, RegexOptions.IgnoreCase); //Regex rr = new Regex("\\w+", RegexOptions.IgnoreCase); //Match m = rr.Match("SIDE8"); //Regex rrr = new Regex("^P", RegexOptions.IgnoreCase); //Match mm = rr.Match("PP00"); //Console.WriteLine(mm.Groups[1].Value); //Console.WriteLine(r.Match("SIDE8").Success); //List<string> cs = Converts("YBr"); //Console.WriteLine("--------------------YBr"); //foreach (string c in cs) { // Console.WriteLine(c); //} //Console.WriteLine("--------------------Y"); //cs = Converts("Y"); //foreach (string c in cs) //{ // Console.WriteLine(c); //} //cs = Converts("BY"); //Console.WriteLine("--------------------BY"); //foreach (string c in cs) //{ // Console.WriteLine(c); //} //cs = Converts("BrY"); //Console.WriteLine("--------------------BrY"); //foreach (string c in cs) //{ // Console.WriteLine(c); //} //cs = Converts("BrBrBrR"); //Console.WriteLine("--------------------BrBrBrR"); //foreach (string c in cs) //{ // Console.WriteLine(c); //} //Console.Read(); string printer = Console.ReadLine(); // Console.WriteLine(printer); // ConfigUtil config = new ConfigUtil("help.sdc"); //// Console.WriteLine(config.Get("Host")); // Console.WriteLine(config.Notes()); // foreach (string node in config.Notes()) { // Console.WriteLine(node); // Console.WriteLine(config.Get("Host",node)); // } // foreach (string f in Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.sdc").ToList()) { // Console.WriteLine(f); // } // Console.WriteLine(DateTime.Now.ToString("HHmmsss")); // Console.WriteLine("J_0001,9".Split(',')[0].TrimStart("J_".ToCharArray())); try { RecordSet rs = new RecordSet(); RecordData rd = new RecordData(); rd.Add("A", "AAA"); rs.Add(rd); if (printer.Length == 0) { printer = "Zebra ZM400 (203 dpi) - ZPL (副本 7)"; } IReportGen gen = new TecITGener(); ReportGenConfig config = new ReportGenConfig() { //Printer = "Microsoft XPS Document Writer", //Printer = "Zebra ZM400 (203 dpi) - ZPL (副本 3)", Printer = printer, NumberOfCopies = 1, PrinterType = (PrinterType)0, Template = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Template\\t2.tff") }; gen.Print(rs, config); } catch (Exception e) { Console.WriteLine(e.Message); Console.Read(); } }
//Строим построчно блюда для Bill private IDictionary<string, RecordSet> BuildBillRecordSet(IDictionary<string, RecordSet> recSets, IHermesDevice device, ref int nextId) { var def = device.Resources.RecordDefinitions["BILL"]; foreach (var q in (RecSets.Bill[])Enum.GetValues(typeof(RecSets.Bill))) { var id = 0; foreach (var p in ComReader.ListMenu.Children) { //todo "BILL" имена совпадают с ORDERS var itemsSet = new RecordSet(nextId++, def, "BILL" + q + p.Id); var itemRec = new Record(def); itemRec.Cells[0].Value = "1"; itemRec.Cells[1].Value = id++; //p.Name; //itemRec.Tag = p.Id; itemRec.TemplateName = q.ToString(); itemsSet.Add(itemRec); try { recSets.Add(itemsSet.Name, itemsSet); } catch (Exception) { var i = "Это дубль"; } } } return recSets; }
//Создаем стринг таблицы детей папок / строим на основе разобранного меню private static IDictionary<string, RecordSet> BuildMenuStringTablesChildren(IDictionary<string, RecordSet> recSets, IHermesDevice device, ref int nextId) { var def = device.Resources.RecordDefinitions["ITEMS-2"]; foreach (var o in ComReader.ListMenu.Children.Where(z => z.IdFather == "This folder!")) { var userSet = new RecordSet(nextId++, def, o.Id); try { //Папки уже создали, они не полезут recSets.Add(userSet.Name, userSet); var items = from q in ComReader.ListMenu.Children where q.IdFather == o.Id select q; foreach (var p in items) { var itemRec = new Record(def); itemRec.Cells[0].Value = p.Name; itemRec.Cells[1].Value = p.Id; itemRec.Cells[2].Value = p.Price; itemRec.Tag = p.Id; if (p.Marker == null) p.Marker = "ITEMNAME"; itemRec.TemplateName = p.Modifikators.Any() ? "POPUP" : p.Marker; userSet.Add(itemRec); } //IDictionary<string, RecordSet> - добавляем ее в словарь //itemsSet.Name - это наш guidId recSets.Add(userSet.Name, userSet); } catch (Exception) { } } return recSets; }