2016-05-17 7 views
0

nicht erfüllen, rufe ich Where-Methode auf einer Liste auf und gibt Elemente zurück, die meine Bedingung nicht erfüllen.Wenn die Linq-Methode Elemente zurückgibt, die die Bedingung

Hier ist mein Aufruf an die Wo-Methode:

IEnumerable<MyObject> list = returnList.Where(p => p.MaxDate != null && p.MinDate != null); 

ich auf „Liste“ IEnumerable nur die Objekte zu haben, erwarte, dass beide MaxDate und MinDate definiert (nicht null) haben!

Und "list" endet mit den gleichen Ergebnissen wie meine returnList, und tatsächlich keine der Elemente in "list" als MaxDate und MinDate definiert (anders als null), meine WHERE-Bedingung sollte keine Elemente in diesem zurückgeben Fall, habe ich recht?

Vielen Dank im Voraus

EDIT2 (Ich habe die Namensräume Ich verwende, vielleicht einige Fehler dort mit diesem ist):

Einfaches Beispiel:

using System; 
using System.Collections.Generic; 
using System.Globalization; 
using System.Linq; 
using System.Security.Cryptography; 
using System.Text; 
using System.Web; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     class MyObject 
     { 
      public DateTime? MinDate { get; set; } 
      public DateTime? MaxDate { get; set; } 
      public string Description{ get; set; } 

     } 


     static void Main(string[] args) 
     { 
      List<MyObject> lista = new List<MyObject>(); 
      lista.Add(new MyObject { Description = "123" }); 
      lista.Add(new MyObject { Description = "456" }); 
      lista.Add(new MyObject { Description = "678" }); 

      IEnumerable<MyObject> returnn = lista.Where(p => p.MinDate != null && p.MaxDate != null); //this list contains 3 elements and should have 0!! Microsoft bug???? I can't understand this! 
     } 
} 
+2

Es ist sehr schwer zu sagen, was los ist, ohne eine Möglichkeit, das Problem zu reproduzieren. Bitte fügen Sie eine [mcve] in Ihre Frage ein - es wäre okay. –

+0

Entschuldigung, ich habe meine Frage jetzt bearbeitet;) – TiagoM

+1

Null Artikel hier mit Ihrem Code. –

Antwort

1

Jesus tun, fühle ich mich so dumm jetzt, ich schaute auf das Feld "Quelle" in der IEnumerable Attribut "returnn", Anstatt die tatsächliche ResultsView zu überprüfen, habe ich eine ToList() erstellt und keine Elemente zurückgegeben!

Ich bin so traurig, lol, vielleicht kann jemand diese Frage schließen ...

Vielen Dank für die Bemühungen jeder! Das Problem war vor dem Computer (mir) LOL

1
returnList.Where(p => p.MaxDate.HasValue && p.MinDate.HasValue); 

Arbeitsbeispiel: https://dotnetfiddle.net/qQrjkC

Edit: auch die != null sollte auch funktionieren, sollten Sie Ihre Tests ordnungsgemäß vor der Abgabe von

+0

versucht jetzt, immer noch 3 Elemente zurück, kann dies nicht herausgefunden: O – TiagoM

+1

@DarkLink Also, was ist der Wert? Wenn es behauptet, einen Wert zu haben ... finde heraus, was es ist. Vielleicht sind sie irgendwie in Verzug? Machen Sie eine foreach, und schauen Sie Ihre Werte in intellisense – Seth

+0

Ich gab keine Downvotes Kumpel, es war nicht ich, ich habe es herausgefunden, das Problem, vielen Dank für Ihre Mühe, werde ich Ihnen jetzt ein upvote geben ;) – TiagoM