Mit .Alle aus dem System.Linq-array zu einem string finden
Ich versuche um herauszufinden, ob eine bestimmte Zelle in meinem array enthält einen Teil einer gegebenen Zeichenkette. Da arrays nicht verwenden .Enthält ich mit .Jede, aber es scheint, mein Verständnis davon, wie .Allen arbeiten ist zu diesig, um es richtig zu machen.
public void ProcessCSV (string typeName) {
for (int y = 0; y < CSVReader.grid.GetUpperBound(1); y++) {
if (CSVReader.grid[0,y] != null) {
if ((CSVReader.grid[0,y].Any(s => typeName.Contains(s)))) {
//(add it to a new list)
So, ich bin Fütterung in Zeichenfolgen wie "Schweinefleisch", "Farm" etc. Manchmal es scheint zu funktionieren perfekt, z.B. wenn typeName ist "Farm" bekomme ich nur wieder Zeilen aus dem array zu zählen, die Zeichenfolge in [0, y]. Aber zu anderen Zeiten, wenn ich mit Farm, einem anderen string oder zufällige Kauderwelsch, es gibt einfach zurück, jede einzelne Zeile, die eine beliebige Zeichenfolge an alle.
Was tatsächlich geschieht, wenn ich rufe .Alle auf diese Weise? Gibt es eine andere Methode, die ich verwenden könnte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich haben Sie es falsch herum.
Any
wird geben einen booleschen Wert zurück, der angibt, ob alle element in der Sequenz erfüllt die Bedingung. Wenn SieAny(s => ...)
,s
ist das element aus der Sequenz überprüft.So, wenn Sie Typ:
...Sie sind im wesentlichen die Fragen:
Zum Beispiel, wenn
typeName
istPork
,Any()
nur zurücktrue
wenn"Pork".Contains("ork")
. Sie meinte wohl es den anderen Weg herum:So, dass
"Pork and beef".Contains("Pork")
zurücktrue
.Wenn Sie möchten, dass die ersten element (anstelle eines booleschen Wahrheit) aus der Sequenz,, erfüllt die Bedingung, verwenden Sie
FirstOrDefault
(oder, wenn Sie wissen, es ist immer mindestens eine, die Sie verwenden könnenFirst
statt). Zum Beispiel:Oder, anders herum (was ich immer noch denke, du meintest):
char' does not contain a member
Enthält' und die besten Erweiterung Methode überlast " - System.Linq -.Enumerable.Enthält<Zeichenfolge>(dieses System.Sammlungen.Generisches.IEnumerable<string>, string)' hat einige ungültige Argumente"Contains
auf einechar
(ein einzelnes Zeichen). Sie sind offenbar erwartetCSVReader.grid[0,y]
um einen string zurückgeben, aber das ist nicht (immer?) der Fall ist. Verwenden Sie dieString
Konstruktor, um Ihren einzigenchar
oder Zeichen-array in einen string.