DataTable dt = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date)
.CopyToDataTable();
ds.Tables[4]
a des lignes mais il lève l'exception
"La source ne contient aucun DataRows."
Vous avez une idée de comment gérer ou supprimer cette exception?
ds.Tables[4]
Pourrait, mais pas le résultat de votre requête linq, ce qui est probablement l'endroit où l'exception est levée. Fractionnez le chaînage de votre méthode pour utiliser des paramètres intermédiaires afin de savoir avec certitude où l'erreur se produit. Cela vous aidera également à vérifier les lignes existantes avant d'appeler CopyToDataTable()
et à éviter ladite exception.
Quelque chose comme
DataTable dt = null;
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if (rows.Any())
dt = rows.CopyToDataTable();
Une autre option consiste à utiliser la fonction ImportRow
sur un DataTable
DataTable dt = ds.Tables[4].Clone();
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
foreach (var row in rows)
dt.ImportRow(row);
Diviser simplement en deux lignes
var rowSources = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if(rowSources.Any())
{
DataTable dt = rowSources.CopyToDataTable();
... code that deals with the datatable object
}
else
{
... error message ?
}
Cela permet de vérifier si le résultat contient un DataRow, si oui, vous pouvez appeler la méthode CopyToDataTable.