1

このようなオブジェクトがあります

class MyObject
{
    string Name;
    string Description;
    List<string> Keywords;
}

そして、これらを検索していると、にList<MyObject> AllObjects基づいてフィルタリングしたい があります。Keywords

var query = Request["q"];
//will only return exact matches
var exactHits = GetAll().Where(x => x.Keywords.Contains(query));
//I want something like this
var searchHits = GetAll().Where(x => x.Keywords.Contains(Regex.Match(query)));
4

2 に答える 2

1

Regex.Match 構文が 100% 確実というわけではありませんが、次のようになるはずです。

var searchHits = GetAll().Where(x => x.Keywords.Any( k => Regex.Match(k, query).Success));

MyObjectこれにより、キーワードの少なくとも 1 つがクエリの正規表現と一致するすべての が返されます。

于 2012-05-16T07:45:37.687 に答える
1
Regex reg = new Regex(query);
var searchHits = GetAll().Where(x => x.Keywords.Any(k => reg.IsMatch(k)));
于 2012-05-16T07:45:59.667 に答える