'dan veri içermeyen tüm sütunları kaldırın Belirli bir sütunun tüm öğeleri boşsa, bu sütunu DataTable'dan kaldırmak istiyorum. Bu işlemi DataTable'daki tüm sütunlarda yapmanın en zarif yolu nedir?VeriTable
9
A
cevap
32
Böyle Compute
yöntemi kullanabilirsiniz: Alternatif
if (table.Compute("COUNT(ColumnName)", "ColumnName <> NULL") == 0)
table.Columns.Remove("ColumnName");
, LINQ kullanabilirsiniz:
if (table.AsEnumerable().All(dr => dr.IsNull("ColumnName")))
table.Columns.Remove("ColumnName");
EDIT: Tamamen soruyu cevaplamak için:
foreach(var column in table.Columns.Cast<DataColumn>().ToArray()) {
if (table.AsEnumerable().All(dr => dr.IsNull(column)))
table.Columns.Remove(column);
}
Döngü koleksiyonu değiştireceğinden, ToArray
numaralı telefonu aramanız gerekir.
0
Function RemoveEmptyColumns(Datatable As DataTable) As Boolean
Dim mynetable As DataTable = Datatable.Copy
Dim counter As Integer = mynetable.Rows.Count
Dim col As DataColumn
For Each col In mynetable.Columns
Dim dr() As DataRow = mynetable.Select(col.ColumnName + " is Null ")
If dr.Length = counter Then
Datatable.Columns.Remove(col.ColumnName)
Datatable.AcceptChanges()
End If
return true
end function
0
public static void RemoveNullColumnFromDataTable(DataTable dt)
{
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
if (dt.Rows[i][1] == DBNull.Value)
dt.Rows[i].Delete();
}
dt.AcceptChanges();
}
+0
Şüphesiz, bu satırdaki sütun 1 DBNULL ise, satırın tamamını siler. OP'nin peşinde olduğu tam olarak değil. – Steve
0
private static void RemoveUnusedColumnsAndRows(DataTable table)
{
for (int h = 0; h < table.Rows.Count; h++)
{
if (table.Rows[h].IsNull(0) == true)
{
table.Rows[h].Delete();
}
enter code here
}
table.AcceptChanges();
foreach (var column in table.Columns.Cast<DataColumn>().ToArray())
{
if (table.AsEnumerable().All(dr => dr.IsNull(column)))
table.Columns.Remove(column);
}
table.AcceptChanges();
}
1
böyle datatable.you kullanımda Sen berrak tüm sütun.
datatable.Columns.Clear();
Güzel. Tüm sütun adlarını kontrol etmek için kodu ayarlayın ve yeşil onay işaretini alırsınız. – Larsenal
PlzSendTheCodes'i duyuyor muyum? –
Belki ;-). Onu zaten kendim uygulamıştım. Sadece ilk soruya tamamen cevap vermediğinden doğru olarak işaretlemek istemiyorum. – Larsenal