J'ai une colonne de base de données que j'ai simplement besoin de vérifier pour voir si une valeur est là. J'ai juste besoin d'itérer sur les valeurs de cette colonne pour voir si une valeur existe. AideC#: comment itérer le contenu d'un DataColumn?
Répondre
Vous itérer les lignes, pas la colonne
DataColumn SETTINGS = dt.Columns["DEFAULTSETTINGS"];
foreach(DataRow row in dt.Select())
{
object columnValue = row[SETTINGS];
// Do something with columnValue
}
Vous pouvez utiliser LINQ dans .NET 3.5:
DataColumn col = dt.Columns["DEFAULTSETTINGS"];
object value = //expected value
bool valueExists = dt.AsEnumerable().Any(row => row.Field<object>(col).Equals(value));
EDIT: Il semble d'après les commentaires que vous essayez de voir si la colonne 'DEFAULTSETTINGS' contient la chaîne 'default'. La méthode d'extension Field place simplement l'objet dans la colonne de données de cette colonne dans le type donné, vous pouvez donc modifier le paramètre type plutôt que d'utiliser ToString(). Donc, pour votre exemple, vous pouvez probablement utiliser:
DataColumn col = dt.Columns["DEFAULTSETTINGS"];
bool valueExists = dt.AsEnumerable().Any(row => "default".Equals(row.Field<string>(col), StringComparison.OrdinalIgnoreCase);
Il n'y a pas besoin d'utiliser LINQ ou itérer manuellement vos DataRows aussi vieux ADO.NET plaine a un couple de solutions telles que DataTable.Select et DataView.RowFilter.
string value = "default";
bool found = dt.Select("DEFAULTSETTINGS = " + value).Length > 0;
Il est évident qu'une fois que vous obtenez les lignes filtrées, vous pouvez faire ce que vous voulez avec elles. Dans mon exemple, j'ai juste vérifié pour voir si n'importe quelle rangée était dans les critères mais vous pouvez les manipuler comme vous l'entendez.
LINQ est bon; encore plus court serait '.AsEnumerable(). Contient (value)'. –
Je reçois «le nom 'col' n'existe pas dans le contexte actuel ' bool valueExists = dt.AsEnumerable(). Tout (row => row.Field
Oui ce serait mieux, je ne sais pas pourquoi je l'ai fait de cette façon vraiment ... – Lee