J'ai une table de données et je souhaite effectuer un groupe insensible à une affaire sur une colonne de table de données (dire La requête est la suivante: p> existe-t-il une méthode pour effectuer un groupe colonne1 code> de type chaîne de type). J'ai observé que Normalement Linq to DataSet effectue une comparaison sensible à la casse. Par exemple, si
colonne1 code> a deux valeurs de chaîne "test" et "test", après l'application
groupe par code> il renvoie deux lignes distinctes avec les valeurs "Test" et "Test" , au lieu d'un.
insensible à une casse-insensibilité par code> de sorte que dans le Au-dessus de l'exemple, je n'ai qu'une ligne avec une seule valeur (test "ou" test ")?
TOUPPER code> ou
tolower code> modifierait effectivement les valeurs en majuscules ou en minuscules au lieu d'utiliser au moins une des valeurs d'entrée, donc je ne veux pas utiliser ceci: p>
3 Réponses :
Ce Article MSDN a des informations sur les jeux de données et la sensibilité des cas .. p>
Vous pouvez contrôler la sensibilité du boîtier de filtrage, de recherche et de tri En définissant le Casensitive propriété. p> blockQuote>
Dans mon cas, DataTable est indépendant de DataSet afin que la propriété sensible à la casse soit définie sur FALSE. Je pense que Linq ne fait pas référence à cette propriété.Il est destiné aux opérations exposées par DataSet / DataTable Class.
DataTable a aussi la propriété. Mais honnêtement, je n'ai pas utilisé Linq pour interagir avec des jeux de données / des tables afin que je ne puisse donc pas dire si cela aurait effectivement un effet.
Vous ne pouvez pas faire cela à partir d'une expression de requête, mais vous pouvez le faire avec la notation de points: Vous pouvez même utiliser une surcharge plus compliquée de groupby code > Pour le faire dans un appel: P>
var query = dataTable.AsEnumerable()
.GroupBy(x => table.Field<string>(Column1),
(key, group) => { value = key,
count = group.Count() },
StringComparer.InvariantCultureIgnoreCase));
Merci d'avoir répondu. C'est ce que je cherche !!! Au fait, si je veux appliquer un groupe par plus d'une colonne (colonne1 et colonne2), alors comment cette requête devrait-elle ressembler ??
@Anoop: le regroupement par plus d'une colonne et i> le faisant de manière insensible au cas sera délicat. Vous seriez probablement préférable à construire un type personnalisé contenant les colonnes qui vous intéressent et remplacent les égaux.
Jon! Pouvez-vous s'il vous plaît expliquer de manière un peu plus détaillée ??
J'ai bien peur de ne pas avoir le temps pour le moment. Je vais essayer de revenir plus tard.
var query = dt.AsEnumerable() .GroupBy(r => r.Field<string>("Mes")) .Select(g => new { Mes = g.Key, Tns = g.Sum(s => Convert.ToDecimal(s.Field<string>("Tns"))) }) .OrderBy(g => g.Mes.First()) .Where(g => g.Mes == ddlMes.SelectedValue.ToString());
Vos modifications récentes sont inapproprié et , compte tenu de l'âge des postes que vous les appliquez, probablement spam. S'il vous plaît désister.