ok, więc mamy EF, i w contexcie jest tabela z dużą ilością kolumn.
mamy enumerację z nazwami kolumn z tej tabeli encji (nazwy równoważne, odpowiadające kolejnosci
bez sensu jest wymienianie 40 kolumn tabeli i przypisywanie im ręcznie wartosci z listy
potrzebuje się odwołac się do kolumny poprzez jej kolejność
zrobiłem odczyt w ten sam sposób (poprzez dataset i Reflection ), wiec nie wierze zeby się nie dało.
// poszukaj reguł do tej listy
IQueryable query3 = from lrrq in context.XXXX
where lrrq.ID == LogRuleListElement.Id
select lrrq;
//stwórz nową tabele wirtualną
DataTable dtlr = new DataTable("LogRights");
// konwertuj wyniki query3 do tabeli (poprzez system.reflection)
dtlr = UsefullFunctions.QueryToDataTable(query3);
//dla kazdej kolumny (bez id i fname) ...
for (int i = 2; i < dtlr.Columns.Count; i++)
{
// dodaj element praw
LogRuleRightsElement = new cLogRuleRightsElement();
// wybierz typ z enuma- dtlr.Columns[i].ColumnName.ToString(), sparsuj do obiektu, i spartsuj do dokładnego typu z enuma
LogRuleRightsElement.LogType = (eLogTypeNames)Enum.Parse(typeof(eLogTypeNames), dtlr.Columns[i].ColumnName.ToString(),true);
// pobierz z tabeli czy jest 0 czy jeden
LogRuleRightsElement.Allowed = Convert.ToBoolean(dtlr.Rows[dtlr.Rows.Count-1][i]);
// dodaj do listy
LogRuleListElement.LogRuleRights.Add(LogRuleRightsElement);
}
//dodaj do finalnej listy :)
logRulesList.Add(LogRuleListElement);