Web検索はbingがおすすめ!

LiteDB のコレクション(テーブル)からレコードを取得する - C#

LiteDB のデータベース、コレクション(テーブル)からレコードを取得するコードを紹介します。

事前準備

こちらの記事のプログラムを作成し、データベースを作成し、レコードを挿入します。

プログラム例

UI

下図のフォームを作成します。ボタンが2つ配置されていますが、今回は[button2]のみを利用します。

コード

下記コードを記述します。button2 のクリックイベントを実装します。
MyRecord.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CreateDB
{
  internal class MyRecord
  {
    public int id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public int Price { get; set; }
  }
}
using LiteDB;

namespace CreateDB
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
      LiteDatabase ldb = new LiteDatabase("MyDB.db");
      ILiteCollection<MyRecord> cl = ldb.GetCollection<MyRecord>("my_table");

      ILiteQueryable<MyRecord> result = cl.Query().Where(r => r.Code == "PD-002");

      List<MyRecord> mlist = result.ToList();
      foreach (MyRecord m in mlist) {
        textBox1.Text += string.Format("{0:d} {1} {2} {3:d}",m.id, m.Name, m.Code, m.Price);
      }
      ldb.Dispose();
    }
  }
}

解説

LiteDatabaseオブジェクトを作成します。コンストラクタの引数にデータベースのファイル名を与えます。
  LiteDatabase ldb = new LiteDatabase("MyDB.db");

LiteDatabaseオブジェクトのGetCollectionメソッドを呼び出して、コレクションオブジェクトを取得します。GetCollectionメソッドの第一引数にはコレクション名(テーブル名)を与えます。
  ILiteCollection<MyRecord> cl = ldb.GetCollection<MyRecord>("my_table");

レコードを検索します。ILiteCollectionオブジェクトのQueryメソッドを呼び出し、ILiteQueryableオブジェクトを取得し、 ILiteQueryableオブジェクトのWhereメソッドを呼び出しレコードの検索を実行します。Whereメソッドの第一引数に与えたメソッドの戻り値がtrueとなるレコードを選択します。下記コードでは、Codeフィールドの値が "PD-002" のレコードを取得しています。
  ILiteQueryable<MyRecord> result = cl.Query().Where(r => r.Code == "PD-002");

Whereメソッドで検索したレコードセットをToList()メソッドを呼び出し、リストに変換します。
  List<MyRecord> mlist = result.ToList();

Listに変換した検索結果をテキストボックスに表示します。
  foreach (MyRecord m in mlist) {
    textBox1.Text += string.Format("{0:d} {1} {2} {3:d}",m.id, m.Name, m.Code, m.Price);
  }

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[button2]をクリックします。Codeの値が "PD-002" のレコードが検索され、id=2 のレコードがテキストボックスに表示されます。

検索条件を変更する

[button3]を配置し、以下のコードを追加します。


    private void button3_Click(object sender, EventArgs e)
    {
      LiteDatabase ldb = new LiteDatabase("MyDB.db");
      ILiteCollection<MyRecord> cl = ldb.GetCollection<MyRecord>("my_table");

      ILiteQueryable<MyRecord> result = cl.Query().Where(r => r.Price > 100);

      List<MyRecord> mlist = result.ToList();
      foreach (MyRecord m in mlist) {
        textBox1.Text += string.Format("{0:d} {1} {2} {3:d}\r\n", m.id, m.Name, m.Code, m.Price);
      }
      ldb.Dispose();
    }

解説

Where メソッドでレコードの検索を実行します。下記のコードでは Price の値が 100より大きいレコードを取得します。
ILiteQueryable<MyRecord> result = cl.Query().Where(r => r.Price > 100);

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[button3]をクリックします。Priceの値が100より大きいレコードが取得され、テキストボックスに表示されます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2022-11-21
iPentec all rights reserverd.