2017-08-22 1 views
1

Im durch eine Liste ausgeführt wird und den Positionswert aus jedem Datensatz zu extrahierenkonvertieren String Array funktioniert nicht

string allPositionsListed = ""; 
int lastRecord = volunteerAssignmentList.Count; 
int currentRecord = 0; 
foreach (Volunteer va in volunteerList) 
{ 
    currentRecord++; 
    if (currentRecord == lastRecord) 
    { 
     allPositionsListed += va.Position; 
    } 
    else 
    { 
    allPositionsListed += va.Position + ","; 
    } 
} 

//allPositionsListed returns: "51000785,52012986" 

ich geschrieben habe eine Abfrage alle Datensätze aus der positionTable Extrahieren wo Position gefunden wird .. wenn ich verwenden

var allPositions = new string[] { "51000785", "52012986" }; 

List<PositionTable> positionList = (from p in DbContext.PositionList 
       where allPositions.Contains(p.Position) 
       select p).ToList(); 

diese liefert die richtigen Ergebnisse ... aber da die allPositions Werte verschieden sein können, wie kann ich wandeln es in der erforderlichen String-Array. IVE versucht

var allPositions2 = allPositionsListed.ToArray(); 

but this returns 
[0]5 
[1]1 
[2]0 
[3]0 
[4]7 
etc... 

when I need 
[0]51000785 
[1]52012986 

Antwort

2

Statt einen String von Ihrer ersten Daten zu generieren, können Sie direkt auf eine zählbare gehen, wie etwas, das sollte funktionieren:

var allPositions = volunteerList 
    .Select(v => v.Position) 
    .ToList(); 

die Sie jetzt erlauben wird, dies zu tun:

var positionList = (from p in DbContext.PositionList 
        where allPositions.Contains(p.Position) 
        select p) 
    .ToList(); 
1

einfach die Split Methode verwenden:

var allPositionsListed = "51000785,52012986"; 
var allPositions2 = allPositionsListed.Split(','); 

allPositions2 sein:
allPositions2 [0] -> "51000785"
allPositions2 [1] -> "52012986"

Wenn Sie die KB sehen, heißt es ab aus der Ausgabe der String # ToArray-Methode

Ein Array, das die Elemente aus der Eingabesequenz enthält.

Also, es funktioniert wie erwartet (natürlich)! und Sie müssen die richtige Methode verwenden.

+0

Während Ihre Antwort richtig ist, müssen Sie die Zeichenfolge gar nicht erst generieren. – DavidG

+0

@DavidG, Ja, aber ich wollte genau darauf hinweisen, wo das Problem liegt. Auf jeden Fall könnte das Problem gelöst werden, indem man nur die "contains" -Methode verwendet, aber er würde nicht erkennen, dass er die falsche Methode für diesen Zweck nennt. – mok

+0

Auch Ihre Antwort würde letztendlich dazu führen, dass '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' werden. – DavidG