C#のLINQで複数のWhere句を使ってコレクションをフィルタリングする方法
C#では、Where句を使用することで、コレクション内の要素を簡単にフィルタリングできます。そして、LINQのクエリ式1つの中には、複数のWhere句を記述することも可能です。
複数のWhere句の基本
通常、複数の条件を組み合わせる場合は「&&」演算子を使って1つのWhere句にまとめることが一般的ですが、Where句を連続して記述しても同じ結果が得られます。各Where句は上から順に適用され、前の条件を通過した要素に対して次の条件が評価されていく仕組みです。
サンプルデータの準備
まずは、Employeeオブジェクトのコレクションを作成します。
IList<Employee> employee = new List<Employee>() {
new Employee() { EmpID = 1, EmpName = "Tom", EmpMarks = 90, Rank = 8} ,
new Employee() { EmpID = 2, EmpName = "Anne", EmpMarks = 60, Rank = 21 } ,
new Employee() { EmpID = 3, EmpName = "Jack", EmpMarks = 76, Rank = 18 } ,
new Employee() { EmpID = 4, EmpName = "Amy" , EmpMarks = 67, Rank = 20} ,
};次に、複数のWhere句を使って、「ランク(Rank)が5より大きく、かつ10未満」の従業員を抽出してみましょう。
var res = from e in employee where e.Rank > 5 where e.Rank < 10 select e;
このように、where句を続けて記述するだけで、自動的にAND条件として機能します。最初のwhere句でランクが5より大きい要素に絞り込み、その結果に対してさらに「ランクが10未満」という条件で絞り込んでいます。
完全なコード例
以下は、ここまでの内容をまとめた完全なサンプルコードです。
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
IList<Employee> employee = new List<Employee>() {
new Employee() { EmpID = 1, EmpName = "Tom", EmpMarks = 90, Rank = 8} ,
new Employee() { EmpID = 2, EmpName = "Anne", EmpMarks = 60, Rank = 21 } ,
new Employee() { EmpID = 3, EmpName = "Jack", EmpMarks = 76, Rank = 18 } ,
new Employee() { EmpID = 4, EmpName = "Amy" , EmpMarks = 67, Rank = 20} ,
};
var res = from e in employee
where e.Rank > 5
where e.Rank < 10
select e;
foreach (var emp in res) {
Console.WriteLine("Name: "+emp.EmpName);
Console.WriteLine("Marks: "+emp.EmpMarks);
}
}
}
public class Employee {
public int EmpID { get; set; }
public string EmpName { get; set; }
public int EmpMarks { get; set; }
public int Rank { get; set; }
}実行結果
Name: Tom Marks: 90
この例では、4人の従業員のうち、Rankが8であるTomだけが両方の条件を満たしているため、出力されています。
なお、今回の処理は「where e.Rank > 5 && e.Rank < 10」というように、1つのWhere句にまとめても同じ結果になります。条件が複雑になる場合や、段階的にフィルタリングしたい場合など、コードの可読性や保守性に応じて使い分けるとよいでしょう。
-
AndroidのSQLiteでWHERE句を使ってデータを抽出する方法【サンプルコード付き】
AndroidにおけるSQLiteとは例に入る前に、まずAndroidにおけるSQLiteデータベースについて簡単に確認しておきましょう。SQLiteは、デバイス上のテキストファイルにデータを保存するオープンソースのSQLデータベースです。Androidには標準でSQLiteの実装が組み込まれており、リレーショナルデータベースの機能をすべてサポートしています。また、このデータベースへアクセスする際、JDBCやODBCのように接続を確立する必要はありません。非常にシンプルに扱えるのが特徴です。本記事では、AndroidのSQLiteでWHERE句を使用し、条件に一致するデータだけを抽出する方法を
-
SQL ServerのWHERE句とは?基本構文からAND・OR条件、テーブル結合まで徹底解説
SQL Server(T-SQL)におけるWHERE句は、SELECT文やINSERT文、UPDATE文、DELETE文などの結果セットから、特定の条件に一致するレコードだけを抽出(フィルタリング)するために使用されます。データベース操作において最も頻繁に使われる句の一つであり、その使い方を正しく理解することは、効率的なクエリ作成の第一歩となります。 WHERE句の基本構文 WHERE 条件式; 条件式には、レコードが選択されるために満たすべき条件を記述します。条件がTRUEと評価された行のみが結果として返されます。 例1:単一の条件で絞り込む SELECT * FROM nhanvien W