Hallo,
eine rein theoretische Frage: Ich möchte mit LINQ herausfinden, welche Elemente eines Arrays eine bestimmte Bedingung erfüllen und dazu die Indices derjenigen Elemente bekommen. Mit anderen Worten, gibt es eine Entsprechung zu diesem Code
List<int> Indices = new List<int>();
for (int i = 0; i < DataArray.Count; i++)
{
if (DataArray[i] == "irgendwas")
{
Indices.Add(i);
}
}
in LINQ?
Danke,
Jack
-> Informatik-Infotainment <-
Hallo Jack_AI,
es gibt ja die List(T).IndexOf-Methode (T).
EDIT: Hm, wird aber bei deiner List<string> nicht funktionieren, wenn mehrere gleiche Strings (die du suchst) drin sind...
Gruß,
dN!3L
Schau dir mal das an: http://msdn.microsoft.com/en-us/vcsharp/aa336760.aspx#WhereSimple1
mfg
SeeQuark
Hallo,
geht schon aber ob das von Vortiel ist weiß ich nicht:
Beispiel:
List<string> stringList = new List<string>
{
"a", "b", "a", "c"
};
List<int> indices =
stringList
.Select((s, i) => new { s = s, i = i })
.Where(tmp => tmp.s == "a")
.Select(tmp1 => tmp1.i)
.ToList();
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Da ist aber die (modifizierte) Linq-Variante aus meinem Link eleganter:
var indices =
(from s in numbers
where s == "irgendwas"
select s).ToList();
mfg
SeeQuark
Da ist aber die (modifizierte) Linq-Variante aus meinem Link eleganter:
Eleganter schon liefert aber nicht das gewünschte Ergebnis - die Indizes.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Stimmt. Hab ich übersehen.
Danke fürs korrigieren.
mfg
SeeQuark
Danke bisher!
@dN!3L:
Toll, die Methode war mir noch gar nicht bewusst! Vielleicht hilft sie mir an einer anderen Stelle weiter. Für dieses Problem jedoch, wie du auch erkannt hast, hilft sie mir leider nicht. Trotzdem danke für den Hinweis.
@SeeQuark:
Ich verstehe leider nicht, wie mir das Beispiel weiterhelfen soll. In dem Beispiel werden alle Zahlen, die kleiner als 5 sind, ausgegeben. Mich würden aber die Indices, also die Positionen im Array, interessieren. Auch dein Beispiel hier im Forum gibt nur die Elemente an sich aus, aber nicht den Index der Elemente.
@gfoidl:
Okay, das beantwortet meine Frage und erhärtet meinen Verdacht, dass es keine so einfache Lösung gibt.
Nochmals danke 😃
edit: Ihr seid zu schnell. Das meiste in meinem Beitrag wurde jetzt schon gesagt. Egal, ich schick's trotzdem ab. 😉
-> Informatik-Infotainment <-
Um auf die Frage zurück zukommen:
Ich glaub nicht, oder nur unter Krämpfen.
Linq basiert auf IEnumerable<T>, weiß also von Indizees prinzipiell nix.
Der frühe Apfel fängt den Wurm.