コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】LINQ で使用できる検索用の拡張メソッドが増える「SearchExtensions」紹介

はじめに

「SearchExtensions」をプロジェクトに追加することで
LINQ で使用できる検索用の拡張メソッドが増えます

インストール

f:id:baba_s:20180129175245p:plain

Visual Studio メニューの「ツール>NuGet パッケージ マネージャー>
ソリューションの NuGet パッケージの管理」を選択します

f:id:baba_s:20180130113351p:plain

「参照」タブを選択して、検索欄に「SearchExtensions」と入力して
表示された「SearchExtensions」を選択します

f:id:baba_s:20180130113408p:plain

インストールしたいプロジェクトをチェックして「インストール」ボタンを押します

使い方

using NinjaNye.SearchExtensions;

「SearchExtensions」を使用する際は、ソースコードの先頭に上記の using を追加します

使用例

Containing

指定された文字列を含むパラメータを持つ要素を抽出します

var result = list
    .Search(x => x.Property1)
    .Containing("searchTerm")
;
var result = list
    .Search(x => x.Property1, x => x.Property2, x => x.Property3)
    .Containing("searchTerm")
;
var result = list
    .Search(x => x.Property1)
    .Containing("search", "term")
;
var result = list
    .Search(x => x.Property1, x => x.Property2, x => x.Property3)
    .Containing("searchTerm1", "searchTerm2", "searchTerm3")
;
var result = list
    .Search(x => x.Property1)
    .Containing("searchTerm1")
    .Search(x => x.Property1)
    .Containing("searchTerm2")
;
var result = list
    .Search(x => x.Property1, x => x.Property2)
    .Containing("searchTerm")
    .Search(x => x.Property3, x => x.Property4)
    .Containing("searchTerm")
;
var result = list
    .Search(x => x.Property1, x => x.Property2)
    .Containing("searchTerm")
    .Search(x => x.Property3)
    .Containing("another", "term")
;

IsEqual

指定された文字列に等しいパラメータを持つ要素を抽出します

var result = list
    .Search(x => x.Property1)
    .IsEqual("searchTerm")
;
var result = list
    .Search(x => x.Property1, x => x.Property2, x => x.Property3)
    .IsEqual("searchTerm")
;
var result = list
    .Search(x => x.Property1)
    .IsEqual("search", "term")
;
var result = list
    .Search(x => x.Property1, x => x.Property2, x => x.Property3)
    .IsEqual("searchTerm1", "searchTerm2", "searchTerm3")
;

StartsWith

指定された文字列で始まるパラメータを持つ要素を抽出します

var result = list
    .Search(x => x.Property1)
    .StartsWith("searchTerm")
;
var result = list
    .Search(x => x.Property1, x => x.Property2, x => x.Property3)
    .StartsWith("searchTerm")
;
var result = list
    .Search(x => x.Property1)
    .StartsWith("search", "term")
;
var result = list
    .Search(x => x.Property1, x => x.Property2, x => x.Property3)
    .StartsWith("searchTerm1", "searchTerm2", "searchTerm3")
;

関連記事