Ich mache einige Vergleiche darüber, wo man Elemente aus einer Liste herausfiltert. Ich bin mir nicht sicher, es direkt zu tun, was O (n) wäre oder .Where(). I made a simple example to test .Where()
auf einem einfachen Datensatz. Es gibt n = 100 Elemente, und wenn ich den Debugger auf der Linie in der Funktion BigO()
führe, geht es genau 100 Male, die mich denken lassen, dass .Where() auch O (n) ist. Was ich nicht herausfinden konnte war, wo die Daten während der Operation gespeichert wurden und ich war mir nicht sicher, ob das eine erhöhte Komplexität hinzufügte.Was ist das große O von Linq? Wo?
Fehle ich etwas oder ist .Where() O (n)?
public class ListerFactory
{
public class Lister
{
bool includeItem { get; set; }
}
List<Lister> someList { get; set; }
public ListerFactory()
{
someList = new List<Lister>();
BuildLister();
}
public void BuildLister()
{
for(int i = 0; i < 100; i++)
{
var inc = new Lister();
inc.includeItem = i % 2;
someList.Add(inc);
}
BigO();
}
public void BigO()
{
someList = someList.Where(thisList => thisList.includeItem == true).ToList();
}
}
LINQ zu _what_? Nicht, dass es wichtig ist ... – SLaks
check out John Skeets edulinq, eine Menge Dinge werden schnell offensichtlich werden, wie die Dinge funktionieren. In der Tat werden Sie schnell erkennen, wie einfach das System tatsächlich ist. https://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx –
@SLaks - LINQ zu Objekten. Es ist tendenziell leichter zu lesen als ganze foreach-Schleifen zu schreiben. –