LINQ:複雑な検索をするために独自のWhereメソッドを作るには?[C#、VB]

特定のケースをハードコーディングした場合の実行結果「"ね"で始まり、かつ、"り"で終わり、かつ、"ぶた"を含む」文字列として、正しく「ねぶたまつり」が出力されている。AND検索についてはショートサーキット評価になっている(「"ぶた"」や「"こぶた"」は"ね"で始まっていないので、最初のStartsWithメソッドによる比較をしただけでそれ以降の比較を打ち切っている)。この効率をなるべく落とさずに汎用的なコードに書き直したいのである。

特定のケースをハードコーディングした場合の実行結果「"ね"で始まり、かつ、"り"で終わり、かつ、"ぶた"を含む」文字列として、正しく「ねぶたまつり」が出力されている。AND検索についてはショートサーキット評価になっている(「"ぶた"」や「"こぶた"」は"ね"で始まっていないので、最初のStartsWithメソッドによる比較をしただけでそれ以降の比較を打ち切っている)。この効率をなるべく落とさずに汎用的なコードに書き直したいのである。