“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------索引超出了数组界限。 
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限。源错误: 
行 66:             OrderDataContext linq = LinqBase.GetNewInt();
行 67:             var arr = from c in linq.S_Goods orderby c.GoodsID descending select c;
行 68:             return arr.ToList<S_Goods>();
行 69:         }
行 70:         /// <summary>
 源文件: D:\ShopSourseNew\Shop.DB\Models\GoodsModel.cs    行: 68 堆栈跟踪: 
[IndexOutOfRangeException: 索引超出了数组界限。]
   System.Data.SqlClient.TdsParserStateObject.ProcessHeader() +5057703
   System.Data.SqlClient.TdsParserStateObject.CleanWire() +137
   System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) +5049260
   System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command) +23
   System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async) +144
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +87
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
   System.Data.Common.DbCommand.ExecuteReader() +12
   System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +1266
   System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +113
   System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +344
   System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +34
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +315
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
   Shop.DB.Models.GoodsModel.GetList() in D:\ShopSourseNew\Shop.DB\Models\GoodsModel.cs:68
   ShopMvc3.Controllers.HomeController.Index() in D:\ShopSourseNew\ShopMvc3\Controllers\HomeController.cs:19
   lambda_method(Closure , ControllerBase , Object[] ) +62
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +205
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +55
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +263
   System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +263
   System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +191
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
   System.Web.Mvc.Controller.ExecuteCore() +116
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8897857
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.1 

解决方案 »

  1.   

    你在哪个地方调用这个返回的LIST的
      

  2.   

    arr.ToList<S_Goods>() 设断点跟踪下看看吧。没代码我们也没法判断。
      

  3.   

    arr.ToList<S_Goods>() -- S_Goods 这个代码粘贴出来
      

  4.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Linq;
    using System.Collections;
    using System.Collections.Generic;
    using Shop.DB;namespace Shop.DB.Models
    {
        public class GoodsModel
        {
         
            /// <summary>
            /// 获得商品实体
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            public static S_Goods GetModel(int id)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Goods where c.GoodsID == id select c;
                try
                {
                    S_Goods dto = arr.First<S_Goods>();
                    linq.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, dto);
                    return dto;
                }
                catch
                {
                    return null;
                }        }
            /// <summary>
            /// 获得所有分类
            /// </summary>
            /// <param name="parentID"></param>
            /// <returns></returns>
            public static List<S_Class> GetClass(int parentID)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Class where c.ParentID == parentID select c;
                return arr.ToList<S_Class>();
            }        /// <summary>
            /// 获得图片列表
            /// </summary>
            /// <param name="goodsID"></param>
            /// <returns></returns>
            public static List<S_Pic> GetPicList(int goodsID)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Pic where c.GoodsID == goodsID select c;
                return arr.ToList<S_Pic>();
            }
            /// <summary>
            /// 获得所有商品
            /// </summary>
            /// <returns></returns>
            public static List<S_Goods> GetList()
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Goods orderby c.GoodsID descending select c;
                return arr.ToList<S_Goods>();
            }
            /// <summary>
            /// 获得商品
            /// </summary>
            /// <returns></returns>
            public static List<S_Goods> GetList(int[] arrGoodsID )
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Goods where arrGoodsID.Contains(c.GoodsID) orderby c.GoodsID descending select c;
                return arr.ToList<S_Goods>();
            }
            /// <summary>
            /// 获得所有商品
            /// </summary>
            /// <returns></returns>
            public static List<S_Goods> GetList(int classID, int actionID, string sourse, decimal price_min, decimal price_max)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Goods where (classID == -1 || c.ClassID1 == classID) && (actionID == -1 || c.actionID == actionID) && (string.IsNullOrEmpty(sourse) || c.Sourse == sourse) && (c.MemberPrice > price_min && c.MemberPrice < price_max) orderby c.GoodsID descending select c;
                return arr.ToList<S_Goods>();
            }
            /// <summary>
            /// 获得所有分类
            /// </summary>
            /// <returns></returns>
            public static List<S_Class> GetGoodsClass()
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Class select c;
                return arr.ToList<S_Class>();
            }
            /// <summary>
            /// 尺码*库存转换成集合数据
            /// </summary>
            /// <param name="sizeText"></param>
            /// <returns></returns>
            public static SortedList<string, string> BildSizeList(string sizeText)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                SortedList<string, string> newSizeLists = new SortedList<string, string>();
                foreach (DictionaryEntry de in BindCtrol.SizeDecode(sizeText, true))
                {
                    if (Convert.ToInt32(de.Value) != 0)
                    {
                        newSizeLists.Add(de.Key.ToString().Trim(), de.Value.ToString());
                    }
                }
                return newSizeLists;        }
            /// <summary>
            /// 说的商品明细列表
            /// </summary>
            /// <param name="lsCarDetails"></param>
            /// <returns></returns>
            public static List<S_OrderDetail> GetGoodsDetails(List<int> lsCarDetails)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_OrderDetail where lsCarDetails.Contains(c.GoodsID) select c;
                return arr.ToList<S_OrderDetail>();
            }
            /// <summary>
            /// 添加喜爱的商品
            /// </summary>
            /// <param name="userID"></param>
            /// <param name="goodsID"></param>
            public static void AddFavaoriteGoods(int userID, int goodsID)
            {
                OrderDataContext linq = LinqBase.GetInt();
                linq.S_Favorite.InsertOnSubmit(new S_Favorite { UserID = userID, GoodsID = goodsID });
                linq.SubmitChanges();
            }
            /// <summary>
            /// 添加喜爱的商品
            /// </summary>
            /// <param name="userID"></param>
            /// <param name="goodsID"></param>
            public static void DelFavaoriteGoods(int userID, int goodsID)
            {
                try
                {
                    OrderDataContext linq = LinqBase.GetInt();
                    var arr = from c in linq.S_Favorite where c.GoodsID == goodsID && c.UserID == userID select c;
                    linq.S_Favorite.DeleteOnSubmit(arr.First<S_Favorite>());
                    linq.SubmitChanges();
                }
                catch
                {
                    LinqBase.CancelDeleteAndInsert();
                    throw;
                }        }
            /// <summary>
            /// 喜爱的商品列表
            /// </summary>
            /// <param name="userID"></param>
            /// <returns></returns>
            public static List<S_Goods> GetFavoriteGoods(int userID)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Favorite from d in linq.S_Goods where c.GoodsID == d.GoodsID && c.UserID == userID select d;
                return arr.ToList<S_Goods>();
            }
            /// <summary>
            /// 添加商品评论
            /// </summary>
            /// <param name="dto"></param>
            /// <returns></returns>
            public static int AddGoodsComment(S_Comment dto)
            {
                OrderDataContext linq = LinqBase.GetInt();
                linq.S_Comment.InsertOnSubmit(dto);
                linq.SubmitChanges();
                return dto.CommentID;
            }
            /// <summary>
            /// 添加商品评论
            /// </summary>
            /// <param name="dto"></param>
            /// <returns></returns>
            public static bool DelGoodsComment(int commentID)
            {
                try
                {
                    OrderDataContext linq = LinqBase.GetInt();
                    var arr = from c in linq.S_Comment where c.CommentID == commentID select c;
                    linq.S_Comment.DeleteOnSubmit(arr.First<S_Comment>());
                    linq.SubmitChanges();
                    return true;
                }
                catch
                {
                    LinqBase.CancelDeleteAndInsert();
                    throw;
                }        }
            /// <summary>
            /// 商品评论列表
            /// </summary>
            /// <param name="goodsID"></param>
            /// <returns></returns>
            public static List<S_Comment> ListGoodsComment(int userID, int goodsID)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Comment where (userID == -1 || c.UserID == userID) && (goodsID == -1 || c.GoodsID == goodsID) select c;
                return arr.ToList<S_Comment>();
            }
            /// <summary>
            /// 商品评论列表
            /// </summary>
            /// <param name="goodsID"></param>
            /// <returns></returns>
            public static List<S_Comment> ListGoodsComment(int userID, int goodsID, DateTime btime, DateTime etime)
            {
                OrderDataContext linq = LinqBase.GetNewInt();
                var arr = from c in linq.S_Comment where c.CommentDate >= btime && c.CommentDate < etime && (userID == -1 || c.UserID == userID) && (goodsID == -1 || c.GoodsID == goodsID) select c;
                return arr.ToList<S_Comment>();
            }
        }
    }