Есть такая портянка, есть иысли как её можно сделать поприличнее?
var table2CacheFields = new Dictionary<string, List<string[]>>()
{
{
"Table1", new List<string[]>()
{
new string[]{"Field1"},
new string[]{"Field2"},
}
},
{
"Table2", new List<string[]>()
{
new string[]{"Field1"},
new string[]{"Field3", "Field4"},
}
}
};
Здравствуйте, Tom, Вы писали:
Tom>Есть такая портянка, есть иысли как её можно сделать поприличнее?
Скобки можно убрать:
var table2CacheFields = new Dictionary<string, List<string[]>>
{
{
"Table1", new List<string[]>
{
new string[] {"Field1"},
new string[] {"Field2"},
}
},
{
"Table2", new List<string[]>
{
new string[] {"Field1"},
new string[] {"Field3", "Field4"},
}
},
};
Здравствуйте, moxnatiy, Вы писали:
M>если c#3.0, M>то вместо new string[] использовать просто new[], ну и убрать скобки
А если List не принципиален (например, не будет меняться) то можно и вовсе
var table2CacheFields = new Dictionary<string, IList<string[]>>
{
{ "Table1", new [] { new [] {"Field1"}, new [] {"Field2"}, } },
{ "Table2", new [] { new [] {"Field1"}, new [] {"Field3", "Field4"}, } },
};
По-моему жесть. Два вопроса:
1. Как это скомпилить? (студия 08-я)
2. Почему МСДНовский сайт ни рыла не знает о type alias? Если я, конечно, правильно все это на чухонский перевел...
Здравствуйте, Smarty, Вы писали:
S>По-моему жесть. Два вопроса: S>1. Как это скомпилить? (студия 08-я) S>2. Почему МСДНовский сайт ни рыла не знает о type alias? Если я, конечно, правильно все это на чухонский перевел...
Странно, что не знает. Type alias еще с самой первой версии в шарпе. Объявляется с помощью директивы using:
using TABLE = System.Collections.Generic.Dictionary<striung,System.Collections.Generic.List<string[]>>;
Но названия типов надо указывать полностью и видно только в пределах одного файла.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Объявляется с помощью директивы using:
Ах это... Ну так, ясно, работает. Просто МСДНу эта "фишка" известна как
an alias for a namespace or a type
вот и не ищется по простому alias type, а сам я в виду редкости применения на практике второй реинкарнации директивы using все время о ней забываю... Спасибо за напоминание!
var dict = (from table in XDocument.Load("Data.xml").Descendants("table")
let rows = from row in table.Elements("row")
let fields = from field in row.Elements("field")
select field.Value
select fields.ToArray()
select new {
name = table.Attribute("name"),
rows = rows.ToList()
}).ToDictionary(_ => _.name, _ => _.rows);
Здравствуйте, Lloyd, Вы писали:
Tom>>Есть такая портянка, есть иысли как её можно сделать поприличнее? L>Есть отличная мысль, как сделать понеприличнее: L>Для начала сохраняешь данные в xml:
…
Ещё неприличнее будет compile-time-генерация проблемного кода по этому xml
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, Tom, Вы писали:
Tom>Есть такая портянка, есть иысли как её можно сделать поприличнее?
Если это принципиально, то я бы сделал в функциональном стиле а ля StringBuilder
var table2CacheFields = new CacheTableFields()
.AddFields("table1", "field1", "field2")
.AddFields("table2", "field1", "field2")
.AddFields("table3", "field1", "field2").ToDictionary();
Все таки имена методов и имя объектов дают больше информации о предназначении чем абстрактный List.
Здравствуйте, Tom, Вы писали:
L>>Ляпота. Tom>я тоже вначале думал или XML или типизированный датасет, но в итоге решил что это усложнение для конкретной задачи.
еще есть время передумать.