How to Create generic method to return multiple list in c# ?

Please describe with a suitable Example and Definition...   

Last updated:7/2/2019 11:33:26 PM

1 Answers

Anonymous User
Anonymous User

Try to use overloaded method.

  public void ExecuteList<T>(out List<T> obj, string sql, params object[] parameters) where T : class

        {
            var db = _context;
            var cmd = db.Database.Connection.CreateCommand();
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(parameters);
            try
            {
                db.Database.Connection.Open();
                using (var reder = cmd.ExecuteReader())
                {
                    obj = ((IObjectContextAdapter)db).ObjectContext.Translate<T>(reder).ToList();

                }
            }
            finally
            {
                db.Database.Connection.Close();
                cmd.Dispose();
            }

        }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name='T'></typeparam>
        /// <typeparam name='T1'></typeparam>
        /// <param name='obj'></param>
        /// <param name='obj1'></param>
        /// <param name='sql'></param>
        /// <param name='parameters'></param>
        public void ExecuteList<T, T1>(out List<T> obj, out List<T1> obj1, string sql, params object[] parameters) where T : class
        {
            var db = _context;
            var cmd = db.Database.Connection.CreateCommand();
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(parameters);
            try
            {
                db.Database.Connection.Open();
                using (var reder = cmd.ExecuteReader())
                {
                    obj = ((IObjectContextAdapter)db).ObjectContext.Translate<T>(reder).ToList();
                    reder.NextResult();
                    obj1 = ((IObjectContextAdapter)db).ObjectContext.Translate<T1>(reder).ToList();
                }
            }
            finally
            {
                db.Database.Connection.Close();
                cmd.Dispose();
            }

        }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name='T'></typeparam>
        /// <typeparam name='T1'></typeparam>
        /// <typeparam name='T2'></typeparam>
        /// <param name='obj'></param>
        /// <param name='obj1'></param>
        /// <param name='obj2'></param>
        /// <param name='sql'></param>
        /// <param name='parameters'></param>
        public void ExecuteList<T, T1, T2>(out List<T> obj, out List<T1> obj1, out List<T2> obj2, string sql, params object[] parameters) where T : class
        {
            var db = _context;
            var cmd = db.Database.Connection.CreateCommand();
            cmd.CommandText = sql;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(parameters);
            try
            {
                db.Database.Connection.Open();
                using (var reder = cmd.ExecuteReader())
                {
                    obj = ((IObjectContextAdapter)db).ObjectContext.Translate<T>(reder).ToList();

                    reder.NextResult();
                    obj1 = ((IObjectContextAdapter)db).ObjectContext.Translate<T1>(reder).ToList();
                    reder.NextResult();
                    obj2 = ((IObjectContextAdapter)db).ObjectContext.Translate<T2>(reder).ToList();
                }
            }
            finally
            {
                db.Database.Connection.Close();
                cmd.Dispose();
            }

        }



Answer