Я импортирую файл excel в DataGridView, и мне нужно получить среднее значение для некоторого столбца. Все работает отлично, когда я пытаюсь использовать образец excel, который составляет около 300 строк. Но когда я пытаюсь использовать фактический файл excel с 41000 строк, я получаю ошибку «указанный приведение недействителен», когда я нажимаю кнопку, чтобы вычислить среднее значение. Я действительно не знаю, что случилось, и не знаю, как его решить. Вот код, который я использую для получения среднего значения, ошибка в столбцах, которые я группирую.указанный литой недействителен на linq
private void Ave_Click(object sender, EventArgs e)
{
BindingSource bindingSource1 = new BindingSource();
bindingSource1.DataSource = (from r in dt.AsEnumerable()
group r by new
{
RNCID = r.Field<Double?>("RNCID"),
Date = r.Field<DateTime>("Date"),
WBTSNAME = r.Field<String>("WBTSNAME")
} into g
select new
{
g.Key.Date,
g.Key.RNCID,
g.Key.WBTSNAME,
VSLCDLMeanLicenseGroupShare = g.Average(r => r.Field<Double>("VS LC DLMean LicenseGroup Share")),
VSLCDLCreditAvailableShared = g.Average(r => r.Field<Double>("VS LC DLCreditAvailable Shared")),
VSLCULMeanLicenseGroupShare = g.Average(r => r.Field<Double>("VS LC ULMean LicenseGroup Share")),
VSLCULCreditAvailableShared = g.Average(r => r.Field<Double>("VS LC ULCreditAvailable Shared")),
UtilDL = g.Average(r => r.Field<Double?>("Util DL")),
UtilUL = g.Average(r => r.Field<Double?>("Util UL")),
});
dataGridView1.DataSource = bindingSource1;
}
вот трассировки стека я получил
System.InvalidCastException was unhandled
Message = "Указанный бросок не является действительным." Источник = "System.Data.DataSetExtensions" StackTrace: на System.Data.DataRowExtensions.UnboxT 1.NullableField[TElem](Object value) at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName) at CE_Fin.Form1.<Ave_Click>b__0(DataRow r) in C:\Users\Administrator\Documents\Visual Studio 2008\Projects\Final\CE_Fin\Form1.cs:line 215 at System.Linq.Lookup
2.Create [TSource] (IEnumerable 1 source, Func
2 keySelector, Func 2 elementSelector, IEqualityComparer
1 Comparer) на System.Linq.GroupedEnumerable 3.GetEnumerator() at System.Linq.Enumerable.WhereSelectEnumerableIterator
2. MoveNext() на System.Windows.Forms.BindingSource.GetListFromEnumerable (IEnumerable перечислимы) на System.Windows.Forms.BindingSource.ResetList() в System.Windows.Forms.BindingSource.set_DataSource (значение объекта) на CE_Fin. Form1.Ave_Click (отправитель объекта, EventArgs e) в C: \ Users \ Administrator \ Documents \ Visual Studio 2008 \ Projects \ Final \ CE_Fin \ Form1.cs: строка 21 в System.Windows.Forms.Control.OnClick (Ev entArgs е) в System.Windows.Forms.Button.OnClick (EventArgs е) в System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent) на System.Windows.Forms.Control.WmMouseUp (сообщение & м, MouseButtons кнопка, Int32 щелкает) на System.Windows.Forms.Control.WndProc (Сообщение & м) на System.Windows.Forms.ButtonBase.WndProc (Сообщение & м) в System.Windows.Forms.Button.WndProc (Message & м) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message & м) на System.Windows.Forms.Control.ControlNativeWindow.WndProc (сообщение & м) на System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr HWND, Int32 MSG, IntPtr WPARAM, IntPtr LPARAM) в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW (MSG & MSG) в System.Windows.Forms.Application. ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (Int32 dwComponentID, Int32 причина, Int32 pvLoopData) на System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (Int32 причине, ApplicationContext контекст) в System.Windows.Forms .Application.ThreadContext.RunMessageLoop (причина Int32, контекст ApplicationContext) в System.Windows.Forms.Application.Run (форма mainForm) в CE_Fin.Program.Main() в C: \ Users \ Administrator \ Documents \ Visual Studio 2008 \ Projects \ Final \ CE_Fin \ Program.cs: строка 18 на System.AppDomain._nExecuteAssembly (сборки Ассамблеи, String [] арг) в System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] арг) на Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() на System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта) в System.Threading.ExecutionContext.Run (ИсполнениеКонтекстовое исполнениеКонтекст, Обратный вызов ContextCallback, Состояние объекта) в System.Threading.ThreadHelper.ThreadStart() InnerException:
Пожалуйста, покажите точное исключение. Вероятно, это один из тех вызовов «Поле», которые терпят неудачу, но мы не можем сказать, без каких-либо дополнительных сведений. –