私は、リストから項目をフィルタリングする場所についていくつか比較しています。私はそれをO(n)にするか、.Where()を使って直接行うことは確信しています。単純なデータセットのI made a simple example to test .Where()
。 n = 100の項目があり、関数BigO()
の行でデバッガを実行すると、100倍になります.Where()もO(n)です。私が把握できなかったのは、操作中にデータが保存されていた場所で、複雑さが増しているかどうかはわかりませんでした。linq .whereのBig Oとは何ですか?
何かが見つからない、または.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_?それは重要ではありません... – SLaks
John Skeets edulinqをチェックしてください。物事がどのように機能しているかについて多くのことがすぐに明らかになります。実際には、システムの実際のシンプルさをすばやく認識します。 https://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx –
@SLaks - オブジェクトへのLINQ。 foreachループ全体を書くよりも読みやすくなりがちです。 –