Cześć,
Mam problem z podejściem do rzutowania danych z DataTabli na typowane dane. Niestety głównie są to dane SQL i za każdym razem są to inne dane. Do rzeczy stałych stosuje warstwę pośrednią DAL, ale momentami użytkownik może zdeklarować sql. Nie mam pomysłu jak to w ogóle ugryść. Moje podejście niżej ale chciałbym to zrobić zgodnie ze sztuką :). Proszę o sugestie ewentualnie namiary na jakieś wzorce.
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("string");
dt.Columns.Add("double");
var row= dt.NewRow();
row["string"] = "abecadlo";
row["double"] = 1.1;
dt.Rows.Add(row);
row = dt.NewRow();
row["string"] = "abecadlo2";
row["double"] = 1.2;
dt.Rows.Add(row);
row = dt.NewRow();
row["string"] = "abecadlo3";
row["double"] = 1.3;
dt.Rows.Add(row);
MagicType.Columns.DoubleColumn = "double";
MagicType.Columns.StringColumn = "string";
var typedList=dt.Rows.OfType<DataRow>().Select(x => (MagicType) x).ToList();
}
class MagicType
{
public string Abc;
public double MyValue;
public static implicit operator MagicType(DataRow dr)
{
MagicType mg = new MagicType();
mg.Abc = dr[Columns.StringColumn].ToString();
mg.MyValue = Convert.ToDouble(dr[Columns.DoubleColumn]);
return mg;
}
public static class Columns
{
public static string StringColumn;
public static string DoubleColumn;
}
}