4 Stimmen

Konnte keine Implementierung des Abfrage-Musters fehler finden

Gegeben

   var ausgewählteElemente = listBoxControl1.SelectedItems;
   var ausgewählteElementeListe = (from i in ausgewählteElemente
                             wähle i).ToList();

Ich erhalte Fehler

Es konnte keine Implementierung des Abfrage-Musters für den Quelltyp 'DevExpress.XtraEditors.BaseListBoxControl.SelectedItemCollection' gefunden werden. 'Select' nicht gefunden. Erwägen Sie die explizite Angabe des Typs der Bereichsvariablen 'i'.

using system.LINQ Erledigt

Ich kann foreach verwenden, also muss es IEnumerable implementieren. Ich ziehe es vor, LINQ über foreach zu verwenden, um jeden String zu sammeln, wenn möglich.

Ich möchte die ToString()-Werte für jedes ausgewählte Element im Listfeld erhalten und sie in eine List einfügen. Wie kann ich das tun?

14voto

Jon Skeet Punkte 1325502

Ich kann foreach verwenden, also sollte es IEnumerable implementieren.

Das stimmt eigentlich nicht, aber hier ist es irrelevant. Es implementiert IEnumerable, aber nicht IEnumerable, über das LINQ funktioniert.

Was ist eigentlich in der Liste? Wenn es bereits Zeichenketten sind, könntest du verwenden:

var selectedItemsList = selectedItems.Cast().ToList();

Oder wenn es "beliebige Objekte" sind und du ToString aufrufen möchtest, kannst du verwenden:

var selectedItemsList = selectedItems.Cast()
                                     .Select(x => x.ToString())
                                     .ToList();

Beachte, dass der Aufruf von Cast der Grund ist, warum die Fehlermeldung vorgeschlagen hat, eine explizit typisierte Bereichsvariable zu verwenden - ein Abfrageausdruck, der mit from Foo foo in bar beginnt, wird in bar.Cast()... umgewandelt.

7voto

Rich Punkte 2076

Um LINQ zum Laufen zu bringen, benötigen Sie ein IEnumerable, ein einfaches IEnumerable reicht nicht aus. Versuchen Sie es mit:

var selectedItems = listboxControl1.SelectedItems.Cast //wobei T der tatsächliche Typ des Elements ist

1voto

Nur versuchen

var Ergebnis = listBoxControl1.SelectedItems.Cast().ToList();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X