Robię kilka porównań na temat tego, gdzie odfiltrować elementy z listy. Nie jestem pewien, aby zrobić to bezpośrednio, co byłoby O (n), lub przy użyciu .Where(). I made a simple example to test .Where()
na prostym zestawie danych. Jest ich n = 100, a kiedy uruchomię debuggera na linii w funkcji BigO()
, robi to dokładnie 100 razy, dzięki czemu myślę, że .Where() to także O (n). Nie mogłem się zorientować, gdzie dane były przechowywane podczas operacji i nie byłem pewien, czy to dodawanie zwiększonej złożoności.Co to jest Big O of linq .where?
Czy czegoś brakuje, czy jest .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 to _what_? Nie żeby to miało znaczenie ... – SLaks
Zapoznaj się z John Skeets edulinq, wiele rzeczy szybko stanie się oczywiste o tym, jak działa. W rzeczywistości szybko zorientujesz się, jak prosty jest system. https://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx –
@SLaks - LINQ do obiektów. Jest łatwiejszy do odczytania niż zapisywanie całych pętli foreach. –