LinQ WO string.Enthält, oder einen string.IndexOf?
Ich brauche etwas zu schreiben, würde das gleiche Ergebnis wie:
var result = collection.Where( o => o.Name.IndexOf( "some_string2" ) != -1 || o.Name.IndexOf( "some_string_2" ) != -1 || o.Name.IndexOf( "some_string3" ) != -1 )
Denen die Menge und die Werte der strings überprüfen (some_string_1, 2 und 3) sind unbekannt (aus DB), also etwas mehr generisches...
Ich habe Folgendes versucht, aber gescheitert sind...
var stringsToCheck = someCommaSeparatedStrings.ToLower().Split( ',' ).ToList();
var result = collection.Where( o => stringsToCheck.Contains( o.ToLower() ) );
In anderen Worten, ich brauche zum abrufen der Objekte aus der Sammlung, die Namen enthalten einige spezielle Zeichenfolgen.
Ist dies EF oder LINQ to objects?
Wie denken Sie, "aber gescheitert", beschreibt ein technisches problem? Bitte lernen Sie zu denken wie ein Programmierer zu beschreiben, Probleme klar.
Er verwendet den Begriff
Gut, ich Frage, weil es funktionieren sollte, wenn es LINQ to objects...
Johnathan ist tatsächlich korrekt. Sie sollten mehr richtig erklärt was nicht funktioniert und warum. In meinem Fall war ich in der Lage zu beantworten, weil ich einfach ignoriert Ihren Versuch, sich das problem angeschaut Sie haben erklärt, und das Problem von Grund auf. Hatte ich nur gesehen, Ihr zweites die Umsetzung und nicht die vollständigen Anforderungen, ich hätte keine Idee woran das liegen könnte oder wie man es beheben.
Wie denken Sie, "aber gescheitert", beschreibt ein technisches problem? Bitte lernen Sie zu denken wie ein Programmierer zu beschreiben, Probleme klar.
Er verwendet den Begriff
collection
, also wahrscheinlich auch nicht.Gut, ich Frage, weil es funktionieren sollte, wenn es LINQ to objects...
Johnathan ist tatsächlich korrekt. Sie sollten mehr richtig erklärt was nicht funktioniert und warum. In meinem Fall war ich in der Lage zu beantworten, weil ich einfach ignoriert Ihren Versuch, sich das problem angeschaut Sie haben erklärt, und das Problem von Grund auf. Hatte ich nur gesehen, Ihr zweites die Umsetzung und nicht die vollständigen Anforderungen, ich hätte keine Idee woran das liegen könnte oder wie man es beheben.
InformationsquelleAutor Seb | 2013-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen in Englisch das ist: gib mir alle Elemente in der Sammlung, in dem alle strings zu überprüfen, einer von Ihnen ist eine Teilzeichenfolge der Zeichenfolge in der Sammlung.
Yup, könnte nicht deutlicher sein, vielen Dank!
Anweisung funktioniert nicht. Gibt Fehlermeldung Lokalen Sequenz kann nicht verwendet werden, in LINQ to SQL-Implementierungen von query-Operatoren mit Ausnahme der Contains-operator.
Dies ist eine Frage, über die Abfrage einer in-memory Sammlung, nicht eine LINQ to SQL-Abfrage.
InformationsquelleAutor Servy
Wenn Sie möchten, um zu testen, ob
o.Name
enthält einestringToCheck
dann:Wenn Sie nur zum test für Gleichheit, dann:
Hinweis: wenn Sie anwenden müssen, Fall Normalisierung dann
ToLower()
sollte entsprechend anzuwenden.Count() > 0
Glocken runter gehen sollte, und Sie sollten mitAny()
statt. ZuerstAny
semantisch repräsentiert, was du meinst, zweitens kann es Kurzschluss (Ende, sobald es findet ein Spiel), anstatt benötigen, um beurteilen die gesamte Abfrage.yup, guter Ruf. Vor allem die sofortige Rückkehr auf die erste "wahre" Bewertung. Meinen Beitrag aktualisiert entsprechend - danke.
Danke, das ist genau das, was ich gesucht habe 🙂
InformationsquelleAutor Chamila Chulatunga
Prüfen Sie die Sammlungen element
o.ToLower()
ich nehme an, Sie müssen prüfen, für seinen Nameno.Name.ToLower()
.InformationsquelleAutor Hamlet Hakobyan
Wenn Sie möchten, um zu überprüfen, ob
o.Name
enthält einigestring
von derstringsToCheck
, würde ich vorschlagen, zu verwenden LinqKit und erstellen Sie die Abfrage mitPredicateBuilder
.InformationsquelleAutor mipe34
Lesen in Englisch das ist: gib mir alle Elemente in der Sammlung, in dem alle strings zu überprüfen, einer von Ihnen ist eine Teilzeichenfolge der Zeichenfolge in der Sammlung.
Wenn Sie möchten, um zu testen, ob
o.Name
enthält einestringToCheck
dann:Wenn Sie nur zum test für Gleichheit, dann:
Hinweis: wenn Sie anwenden müssen, Fall Normalisierung dann
ToLower()
sollte entsprechend anzuwenden.Count() > 0
Glocken runter gehen sollte, und Sie sollten mitAny()
statt. ZuerstAny
semantisch repräsentiert, was du meinst, zweitens kann es Kurzschluss (Ende, sobald es findet ein Spiel), anstatt benötigen, um beurteilen die gesamte Abfrage.Prüfen Sie die Sammlungen element
o.ToLower()
ich nehme an, Sie müssen prüfen, für seinen Nameno.Name.ToLower()
.Wenn Sie möchten, um zu überprüfen, ob
o.Name
enthält einigestring
von derstringsToCheck
, würde ich vorschlagen, zu verwenden LinqKit und erstellen Sie die Abfrage mitPredicateBuilder
.