Hallo, Christian,
danke für Deine schnelle Antwort -- ich versuchte inzwischen selber die Lösung zu finden, jedoch ohne Erfolg.
Auf
MSDN-Seite steht, dass ListViewItemCollection folgende Erweiterungsmetoden unterstützt:
AsQueryable Konvertiert ein IEnumerable in ein IQueryable. (Durch Queryable definiert.)
Cast Konvertiert die Elemente eines IEnumerable in den angegebenen Typ. (Durch Enumerable definiert.)
OfType Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs. (Durch Enumerable definiert.)
Wenn ich aber es versuche, eine der Metoden aufzurufen, dann bekomme ich diese in IntelliSense nicht angezeigt.
Was mir aber noch aufgefallen hat ist folgendes: alle 3 Erweiterungsmetoden erweitern die IEnumerable, die ListViewItemCollection implementiert aber diese Schnittstelle nicht, sondern die ICollection. Daher kann man, z.B., da kein LINQ direkt anwenden.
Aber das kann ich kaum glauben...
Im Moment mache ich folgende Umwandlung, die vielleicht nicht besonders schön ist:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| [Serializable] public class LinkInfo { public string FileName { get; set; } public string LinkContent { get; set; } public string LinkStatus { get; set; } public string NewLink { get; set; } }
public static IEnumerable<LinkInfo> GetLinksFromListView(ListView lstLinkList) { foreach (ListViewItem li in lstLinkList.Items) { LinkInfo newLink = new LinkInfo(); newLink.FileName = new string(li.Text.ToCharArray()); newLink.LinkContent = new string(li.SubItems[1].Text.ToCharArray()); newLink.LinkStatus = new string(li.SubItems[2].Text.ToCharArray()); newLink.NewLink = new string(li.SubItems[3].Text.ToCharArray()); yield return newLink; }
} |