8
votes

Comment comparer les chaînes dans la requête LINQ

comparèteo ne fonctionne pas ici pour moi.

ma requête LINQ est xxx

et em obtenir une exception

///// / Exception ///////////// xxx

mon code est quelque chose comme ça xxx

exception est à cette ligne xxx


6 commentaires

Quelle est la valeur dans txtserchid.text et quelle est la sortie attendue? Vous comparez CustomerID à une chaîne arbitraire ????


TXtserchid est textfeild (fenêtre contorl) Je comparais la valeur saisie de l'utilisateur à la collecte d'objets que j'ai, pour rechercher des identifiants dont les identifiants sont inférieurs ou que vous pouvez dire plus que celui entré par l'utilisateur.


et c'est texte est? Et quel sens a-t-il de comparer ce texte à un CustomerID ? Peut-être que je ne comprends tout simplement pas votre exigence d'entreprise.


si (résultat! = null) n'est jamais null . Vous devez utiliser résultat.any () pour vérifier si la séquence contient ou non des éléments.


yess! Il s'agit d'un texte même si quelqu'un entrait un peu numérique dans Textfield, la propriété Textfield Text manipulera que comme texte.


Ohhhhhh! Il donne la même exception lorsque j'appelle le résultat. Nany () peut-il comprendre


4 Réponses :


8
votes

Essayez ceci:

var query = from c in customers where c.CustomerID.Equals(txtSerchId.Text) select c;


2 commentaires

Je vais suggérer String.equals (Obja, Objb) au lieu d'Obja.equals (Objb).


yah! J'étais juste pour mentionner que lorsque j'utilise des égaux méthode (ce n'est pas une exigence juste pour vérifier) ​​qui fonctionne bien, ce qui est plus frustrant pour moi ........



0
votes

citant de votre commentaire "Je comparais la valeur saisie de l'utilisateur à la collecte d'objets que j'ai, pour rechercher des clients ayant des identifiants de moins que ou que vous pouvez dire plus que celui entré par l'utilisateur."

Essayez ceci pour "plus grand que": frappe> p> xxx pré>

p>

mise à jour comme plus d'informations a été ajoutée dans les commentaires: p>

Essayez ceci: p>

customers.ToList().Where(c => c.CustomerID.CompareTo(txtSerchId.Text) >= 0);


4 commentaires

Intéressant, alors vous décidez si un certain CustomerID est supérieur à un autre?


Exactement! Plus grande sur la base de l'ordre alphabétique, c'est ce que la méthode comparèteo fait simplement mais elle ne fonctionne pas dans le concours LINQ ne savent pas y ??? La méthode comparèteo de la classe de cordes prend une argument de chaîne et la comparer avec 'Cet objet' (appelant) est renvoyé comme suit: 0 Si égal -1 Si l'argument est plus grand e..g ("C" .compareto ("D") 1 Si l'argument est moins E..g ("C" .compareto ("A"))


Probablement parce qu'il n'y a pas de traduction de "comparer" à SQL, de sorte que la iquéryable ne peut pas le gérer. Vous pouvez extraire l'ensemble de l'ensemble dans une liste puis utiliser Comparer pour obtenir les enregistrements dont vous avez besoin. Ce n'est pas une voie très efficace et pourrait induire une performance touchée car elle doit tirer chaque enregistrement, mais ça vaut la peine d'essayer: clients.tolist (). Où (c.Customerid.compaeto (txtserchid.t ext) > = 0);


l'utilisation de LINQ est obligatoire dans mon scénario Comment puis-je intégrer cette solution à LINQ



0
votes

aller simple:

  1. pour l'égalité:

    var résultat = de C en clients où c.customéride == convert.toint32 (txtserchid.text) Sélectionnez C;

  2. pour plus grand: où c.customéride> = convert.toint32 (txtserchid.text)

  3. pour moins: où c.customéride <= convert.toint32 (txtserchid.text)


0 commentaires

0
votes
 var List = (from t in ObjCon.TableName
                            where t.GameDate.Value.CompareTo(GameDate) >= 0
                            join t1 in ObjCon.Teams on t.Home equals t1.TeamId
                            where t1.SportId == 3
*This Worked FOR ME

0 commentaires