Linq und string.Contains() – Problem

Ich hatte eine kleine Methode, um mir bestimmte Datensätze aus einer Datenbank zu holen. Dazu nutze ich Linq, da es schön einfach ist.

        public IEnumerable<Data> Search(string filter)
        {
            var dataSet = from data in this.bigDataSet
                          where data.Name.Contains(filter)
                          select data;

            return dataSet;
        }

Über die Variable „filter“ wollte ich die Daten eingrenzen. Allerdings sollte es auch möglich sein, sich alle Datensätze anzusehen. In der MSDN zu string.Contains() lautet es:

Rückgabewert
true, wenn der value-Parameter in dieser Zeichenfolge vorkommt oder value eine leere Zeichenfolge („“) ist, andernfalls false.

Heißt für mich, dass ich „filter“ leer lassen kann und so alle Datensätze bekomme. Funktionierte aber nicht. Ich vermute mal, es liegt daran, dass ich Linq-to-Ent verwende. Das Workaround funktioniert aber ganz gut:

        public IEnumerable<Data> Search(string filter)
        {
            var dataSet = from data in this.bigDataSet
                          where (!string.IsNullOrEmpty(filter) ? data.Name.Contains(filter) : true)
                          select data;

            return dataSet;
        }

Vielleicht hat ja jemand genauere Informationen, warum der erste Ansatz nicht funktioniert. Auf Anhieb habe ich nichts gefunden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.