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;
        }
         
    }