LINQ の WHERE IN 句を使用してパフォーマンスを向上させる
大規模なデータセットを操作する場合、コードの効率が非常に重要になります。 SQL Server では、WHERE IN 句を使用して、指定された範囲内の複数の値に基づいてレコードをフィルタリングできます。これにより、複数の OR 条件を使用する場合と比較して、クエリのパフォーマンスが大幅に向上します。
LINQ (言語統合クエリ) は、C# 開発者に同様の機能を提供します。ただし、基本的な構文では最適なパフォーマンスが得られない場合があります。この記事では、LINQ で WHERE IN クエリを実行するためのより効率的なアプローチを紹介します。
次のコード ブロックについて考えてみましょう。
public List<State> Wherein(string listofcountrycodes) { string[] countrycode = listofcountrycodes.Split(','); List<State> statelist = new List<State>(); for (int i = 0; i < countrycode.Length; i++) { _states.AddRange( from states in _objdatasources.StateList() where states.CountryCode == countrycode[i].ToString() select new State { StateName = states.StateName }); } return _states; }
このコードは、値ごとに一連のクエリを実行します。 listofcountrycode 配列内。ジョブは完了しますが、効率はそれほど高くありません。
パフォーマンスを向上させるために、次の簡潔な LINQ 式を使用できます。
dataSource.StateList.Where(s => countryCodes.Contains(s.CountryCode))
この式では、次のように使用します。 Contains() メソッドを使用して、StateList 内の各州の CountryCode が countryCodes 配列に存在するかどうかを確認します。すべての条件を 1 つの式に結合することで、複数のクエリの実行によるパフォーマンスのオーバーヘッドを回避します。
この最適化されたアプローチにより、特に大規模なデータセットを扱う場合、クエリ速度が大幅に向上します。これにより、LINQ で WHERE IN 操作を実行するためのよりクリーンかつ簡潔な方法が提供され、コードがより効率的になり、保守が容易になります。
以上がパフォーマンスを向上させるために、LINQ の WHERE IN クエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。