Tag: datatable

“索引0为负数或行数以上”错误C#

我太需要帮助了。 我收到以下exception: 索引0为负数或高于行计数错误 我在stackoverflow和谷歌研究,但我无法修复错误。 我的代码: if (lb_Gmy.SelectedItems.Count > 0) { string gmyquery = “Select * from tblA (nolock) where ParameterID = 2 and Status = 1”; DataView dataw = new DataView(ReturnTable(gmyquery)); foreach (string item in lb_Gmy.SelectedItems) { dataw.RowFilter = “Value = ‘” + item + “‘”; gmy += dataw[0][“ParamValue”].ToString() + “,”; } gmy = gmy.Substring(0, […]

添加行时DataTable中的列重复

我创建一个DataTable并将其绑定到DataGrid。 我的DataSource包含一个表(FooTable),它由一列(FooName)组成。 以下代码运行正常 – 除了每次添加新行时,都有一个重复的列填充相同的数据,我不知道如何摆脱。 见下图和代码。 我只有一个FooName列,并且出现了一个重复的列。 /* Create a DataGrid dg1 */ DataGrid dg1 = new DataGrid(); DataGridTextColumn col = new DataGridTextColumn(); col = new DataGridTextColumn(); colA.Binding = new Binding(“FooName”); colA.Header = “FooName”; dg1.Columns.Add(colA); dataGrid1.Children.Add(dg1); /* Create a DataTable and bind it to DataGrid */ SqlCeDataAdapter da = new SqlCeDataAdapter(); string sqlStr = @”SELECT […]

使用Linq将Datatable GroupBy Multiple Columns转换为Sum

我想在Group BY之后总计所有TotalImages列,但是它“显示我错误”。 任何能帮我解决问题的人。 请记住只想使用此语法库并希望DataTable不是List。 如果有人帮助我,请感激不尽。 样本数据:- CountryId | CItyId | TotalImages 1 1 2 1 2 2 1 2 3 1 3 4 2 1 2 2 2 2 2 2 3 2 3 4 DataTable dt = dt.AsEnumerable() .GroupBy(r => new { Col1 = r[“CountryId”], Col2 = r[“CityId”]}) .Select(g => g.Sum(r => r[“TotalImages”]).First()) .CopyToDataTable();

将GridView绑定到DataTable

我有一个存储库,其中包含我正在处理的这个项目的所有LINQ查询。 我能够将LINQ结果传递给DataTable并将其绑定到gridview以显示数据。 现在我需要使gridview可以排序。 我已经设置了AllowSorting=”true”并且我在代码隐藏中的例程中处理了OnSort事件。 该程序使其成为排序例程就好了。 手动排序是我唯一的选择,还是有一种更简单的方法来对OnSort处理程序中的gridview进行排序?

聚合函数Sum()和Type:String的使用无效

我有一个数据表,一列包含int值。 我没有使用任何数据类型指定列。 当我执行以下操作时。 object sum = dttest.Compute(“sum(Value)”, “”); 我收到了以下错误。 聚合函数Sum()和Type:String的使用无效。 我尝试使用将列值转换为int object sum = dttest.Compute(“sum(Convert(Value, ‘System.Int32’))”,””); 我又得到了另一个错误 聚合参数中的语法错误:期望具有可能的“子”限定符的单个列参数。 当我为列指定数据类型时,第一个代码将返回正确的值。 但在我的情况下,我无法指定列数据类型。 有人有解决方案吗?

如何使用Asp.net动态添加树视图中的根节点

我想将DataTable绑定到TreeView.I已编写以下Code.Its目前工作,意味着它显示DataTable但没有根节点的所有数据。 List lstData = GetSPDocuments(); gvDocuments.DataSource = lstData; gvDocuments.DataBind(); DataTable dt = ConvertToDataTable(lstData); TreeNode node1 = new TreeNode(“Root”); foreach (DataRow r in dt.Rows) { int nodeLvl = int.Parse(r[“ID”].ToString()); string nodeParent = “Folders”; string nodeName = r[“Title”].ToString(); TreeNode tNode = new TreeNode(nodeName); ht.Add(nodeLvl.ToString() + nodeName, tNode); if (tvDocs.Nodes.Count == 0) tvDocs.Nodes.Add(tNode); else { nodeLvl–; tvDocs.Nodes.Add(tNode); } […]

确定数据表中的重复项

我有一个从CSV文件加载的数据表。 我需要根据数据表中的两列( product_id和owner_org_id )确定哪些行是重复的。 一旦我确定了,我就可以使用该信息来构建我的结果,这是一个只包含非唯一行的数据表,以及一个只包含唯一行的数据表。 我在这里看了其他的例子,到目前为止我提出的代码都是编译和执行的,但它似乎认为数据中的每一行都是唯一的。 实际上在测试数据中有13行,只有6行是唯一的。 显然我做错了什么。 编辑 :我想我应该注意,有重复的行应该被删除,而不仅仅是该行的重复。 例如,如果有4个重复项,则应删除所有4个而不是3个,从4中留下一个唯一的行。 EDIT2 :或者,如果我可以选择所有重复的行(而不是尝试选择唯一的行),那对我来说没问题。 无论哪种方式都可以让我得到我的最终结果。 处理方法中的代码: MyRowComparer myrc = new MyRowComparer(); var uniquerows = dtCSV.AsEnumerable().Distinct(myrc); 以及以下内容: public class MyRowComparer : IEqualityComparer { public bool Equals(DataRow x, DataRow y) { //return ((string.Compare(x.Field(“PRODUCT_ID”), y.Field(“PRODUCT_ID”), true)) == // (string.Compare(x.Field(“OWNER_ORG_ID”), y.Field(“OWNER_ORG_ID”), true))); return x.ItemArray.Except(new object[] { x[x.Table.Columns[“PRODUCT_ID”].ColumnName] }) == y.ItemArray.Except(new […]

将数据表转换为自定义XML的替代方法

有没有办法我可以在不使用数据表的情况下创建XML 一个StringWriter : System.IO.StringWriter writer = new System.IO.StringWriter(); yourDataTable.WriteXml(writer, XmlWriteMode.WriteSchema, true); 对我来说效果不好,因为它将后代作为列标题。 我想要第一行作为后代。 迭代DataColumns和DataRows。 我正在阅读LINQ-to-DataTable和LINQ-to-XML。 LINQ查询可以帮助我吗?

你能从ObjectDataSource获得一个DataTable吗?

如果我在设计时定义了ObjectDataSource,我可以在运行时从该ObjectDataSource获取DataTable吗? 我有一个方法返回一个DataTable,我正在使用它为ObjectDataSource的Select方法属性。

collections被修改; 枚举操作可能无法在Except操作上执行

我试图从循环中的DataTable dt中删除一些行,我得到上述exception: while (dt.Rows.Count > 0 && retry < Globals.PushRetryLimit) { var query = dt.AsEnumerable().Except(successBatch.AsEnumerable(), DataRowComparer.Default) .AsEnumerable().Except(failBatch.AsEnumerable(), DataRowComparer.Default); if (dt.AsEnumerable().Any()) dt = query.CopyToDataTable(); } successBatch和failBatch都是dt DataTable克隆。 在提出此错误的其他问题中,我们正在处理foreach循环。 为什么会出现此错误? 堆栈跟踪: at System.Data.DataTableExtensions.LoadTableFromEnumerable[T](IEnumerable`1 source, DataTable table, Nullable`1 options, FillErrorEventHandler errorHandler) at System.Data.DataTableExtensions.CopyToDataTable[T](IEnumerable`1 source)