MongoDB に対して作成する LINQ クエリは、最終的に MongoDB クエリ言語の同等のクエリに変換する必要があることに注意してください。この部分が原因で、作成した LINQ クエリを生の MongoDB クエリに変換することはできません。
.Where(x=>ImageHash.Similarity(x.Hash, hash) >= 50)
MongoDB クエリ言語には同等のものはありません。
あなたがしなければならないことは、すべての Image _id と Hash 値をクライアント側で取得し、類似性基準のクライアント側を実行することです。十分に類似しているすべての画像の _id 値を取得したら、画像自体を取得できます。
画像のサブセットのみが類似性基準クライアント側で実行される必要があるように、クエリに他の基準も含まれることを願っています。
多かれ少なかれ次のようになります。
var matchingIds = collection.FindAllAs<BsonDocument>
.SetFields("_id", "Hash")
.AsEnumerable() // force client side evaluation of the rest of the query
.Where(x => ImageHash.Similarity(x["Hash"].AsByteArray, hash) > 50))
.Select(x => x["_id"]);
var query = Query.In("_id", matchingIds);
var matchingImages = collection.Find(query);
foreach (var image in matchingImages)
{
// process matching image
}