源cantain没有数据行,同时使用取asp.net

问题描述:

目前当记录是零我正在错误源 cantain没有数据行来管理,我已经检查了计数> 0但仍 我是想知道如何解决这个问题。源cantain没有数据行,同时使用取asp.net

dynamic dt = ds.Tables(0); 
int totalrowCount = dt.Rows.Count; 


//dt.Rows.Count 
//dt.Select().Take(100) 
// dt.Rows.Cast(Of System.Data.DataRow)().Take(100) 
DataTable dt1 = default(DataTable); 
if (totalrowCount > 0) { 
    dt1 = dt.AsEnumerable().Take(100).CopyToDataTable(); 
} else { 
    dt1 = dt.AsEnumerable().CopyToDataTable(); 
} 
+0

不清楚你希望检查做什么 - 如果没有行,那么'dt.AsEnumerable()。Take(100)'将返回与'dt相同的序列.AsEnumerable()'。我们不知道你在哪里得到错误。如果它在后面的一段代码中需要一个非空的'DataTable',那么你真的需要更仔细地考虑一下当没有任何行时你想要发生什么。 –

+0

在其他部分我收到错误。 –

+0

@Zbidi我在其他部分得到错误 –

由于documented,CopyToDataTable()无法在空行序列上调用 - 大概是因为没有模式信息可以包含。相反,如果你知道你的原始表是空的,并且你想要一个具有相同模式的新表,只需克隆它。所以你应该有:

DataTable dt = ds.Tables(0); 
DataTable newTable = dt.Rows.Count > 0 
    ? dt.AsEnumerable().Take(100).CopyToDataTable() 
    : dt.Clone(); 

检查以下行数;

if (ds.Tables.Count > 0 && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) 

然而,当行2-14 < = 0

dt1 = dt.AsEnumerable().CopyToDataTable(); 

这一行就没有意义了。 你是否需要获取空行?

+1

如果没有表格,代码将在别处失败。 OP正在成功检查是否有任何行。 –

+0

感谢评论jon – Zbidi