Ich versuche, einige meiner C# -Code in VB zu verschieben. Wenn ich den C# -Code über den Telerik-Übersetzer laufen lasse, spuckt er den folgenden VB-Code aus. Der VB-Code wird nicht kompiliert und gibt einen Fehler im Abschnitt "a.Remove()". Der Fehler istVergleich der C# Linq-Syntax -VS- VB Linq-Syntax
„Expression keinen Wert erzeugen“ Was ist der richtige Code, um das „Drehbuch“ und „a“ Tags zu entfernen wäre, so dass der VB-Code die gleichen wie die C# funktioniert Code?
Mein ursprünglicher C# -Code:
public static HtmlDocument RemoveUselessTags(HtmlDocument doc)
{
doc.DocumentNode.Descendants()
.Where(a => a.Name == "script" || a.Name == "a")
.ToList()
.ForEach(a => a.Remove());
return doc;
}
Mein "übersetzt" VB-Code:
Public Shared Function RemoveUselessTags(doc As HtmlDocument) As HtmlDocument
doc.DocumentNode.Descendants()
.Where(Function(a) a.Name = "script" OrElse a.Name = "a")
.ToList()
.ForEach(Function(a) a.Remove())
Return doc
End Function
Verwenden Sie einfach eine echte "foreach" -Schleife an erster Stelle (in beiden Sprachen). Es verbessert die Lesbarkeit des Codes, entfernt unnötige Komplikationen in der Syntax (wie zum Beispiel die spezielle, die Sie stolpern ließen) und verbessert die Leistung (der Speicherbedarf geht von O (n) nach O (1) nicht ganz unnötig) Erstellen einer Liste, die Sie nie verwenden und alle Elemente darin speichern). – Servy
Die Übersetzung des Codes ist perfekt, außer "OrElse" sollte "Or" sein. – jdweng
@jdweng - Nein, 'OrElse' ist das VB-Äquivalent des Kurzschließers' || 'in C#. –