如何查询内存中的数据表以填充另一个数据表我正在尝试更新MicrosoftReports。它所做的是写出有多少客户被排除在转换过程之外以及原因。目前,该程序将所有已删除的客户端写回服务器,然后向服务器查询以将结果填充到专门的表中。这是当前查询:SELECTDeletedClients.Reason,COUNT(DeletedClients.Reason)ASNumber,CAST(CAST(COUNT(DeletedClients.Reason)ASfloat)/CAST(t.TotalASfloat)*100ASnumeric(4,1))ASpercentageFROMDeletedClientsCROSSJOIN(SELECTCOUNT(*)ASTotalFROMDeletedClientsASDeletedClients_1WHERE(ClinicID=@ClinicID))AStWHERE(DeletedClients.ClinicID=@ClinicID)AND(DeletedClients.TotalsIdent=@ident)GROUPBYDeletedClients.Reason,t.TotalORDERBYNumberDESC我想做的不是将DeletedClients写入服务器,因为它已经作为DataTable存在于我的程序内存中,它只会减慢报告速度并使用我们不需要保存信息来填充数据库。我的主要问题是:如何查询数据表以创建一个新的内存数据表,其结果与我写到SQL服务器并使用上面的查询读回它的结果相同?或如何在MicrosoftReports中为Tablix=Fields!Reason.Value=Fields!Number.Value=Fields!percentage.Value中的项目执行groupby子句,类似于上面的查询返回的内容?您可以使用DataTable.Select查询DataTable。DataTable表=GetDataTableResults();DataTable结果=table.Select("SomeIntColumn>0").CopyToDataTable();或者对于更复杂的查询,您可以使用LINQ查询DataTable:DataTabledt=GetDataTableResults();varresults=fromrowindt.AsEnumerable()grouprowbynew{SomeIDColumn=row.Field("SomeIDColumn")}进入行组selectnew{SomeID=rowgroup.Key.SomeIDColumn,SomeTotal=rowgroup.Sum(r=>r.Field("SomeDecimalColumn"))};DataTablequeryResults=newDataTable();foreach(varresultinquery)queryResults.Rows.Add(newobject[]{result.SomeID,result.SomeTotal});我可以通过两种方式查询数据表。下面是使用这两种方法的示例。以上就是C#学习教程:如何查询内存中的DataTable来填充另一个数据表共享的所有内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——usingSystem;使用系统。数据;namespaceWindowsFormsApplication1{staticclassProgram{[STAThread]staticvoidMain(){vardeletedClients=GetDataTable();//使用linq创建新的DataTable。varexample1=deletedClients.AsEnumerable().Where(x=>x.Field("ClinicId")==1).CopyToDataTable();//使用DefaultViewRowFilter创建一个新的DataTable。deletedClients.DefaultView.RowFilter="ClinicId=1";varrowFilterExample=deletedClients.DefaultView.ToTable();}staticDataTableGetDataTable(){vardataTable=newDataTable();//假设ClinicId是一个整数...dataTable.Columns.Add("ClinicId",typeof(int));dataTable.Columns.Add("原因");dataTable.Columns.Add("数字",typeof(int));dataTable.Columns.Add("百分比",typeof(float));for(intcounter=0;counter本文收集自网络,不代表立场,如有涉及及侵权请点击维权联系管理员删除如需转载请注明出处:
