Hallo!
Es fehlt noch:
foo.Where.IsEqualOrGreaterThan(...)
foo.Where.IsEqualOrLessThan(...)
+ alle mit Not, wobei man hier eine "WhereNot"-Klasse nutzen könnte:
foo.Where.Not.IsEqual("F1", 0)
foo.Where.Not.IsLessThan("F1", 0)
foo.Where.Not.IsGreaterThan("F1", 0)
foo.Where.Not.IsLike("F1", 0)
foo.Where.Not.IsBetween("F1", 0, 9)
foo.Where.Not.IsIn("F1", ???)
foo.Where.Not.IsEqualOrGreaterThan(...)
foo.Where.Not.IsEqualOrLessThan(...)
Ich finde, dass dann der Code etwas lästiger zu bedienen wird, da man dann nicht mehr "... Where(...).Where(...).Having(..)" schreiben kann.
Andererseits wird er vielleicht sogar (je nach Geschmack) lesbarer.
Einen Nachteil hat so ein Konstrukt aber: sobald man eine Bedingungsart ergänzt, muss man das COM-Interface ändern.
Bei der Variante mit Where(Element, Vergleichsparameter, Vergleichselement) muss man nur den Code dahinter anpassen, kann aber die COM-Schnittstelle unverändert lassen.
In der "reinen" .net-Lib will ich so etwas aber nicht haben, da man dort mit Überladungen arbeiten kann.
Mir selbst gefällt es für VBA so besser:
- Code: Alles auswählen
foo.Where(Feld, RelationalOperators_Like, "abc*")
Between könnte ich mir z. B. auch so vorstellen:
- Code: Alles auswählen
SqlGenerator.Where(Feld, RelationalOperators_Between, Array(von, bis))
'oder
With SqlGenerator
.Where(Feld, RelationalOperators_Between, .BetweenParam(von, bis))
end With
'oder
With SqlGenerator
.Where(.BetweenCondition(Feld, von, bis))
end With
mfg
Josef