一連の人々を表す Objectset があり、それを DataGridView コントロールの DataSource として使用したいと考えています。しかしその前に、検索文字列に基づいて人々のセットをフィルタリングしたいと考えています。したがって、検索文字列が "David John" の場合、"David Johnson" と "John Davidson" は保持しますが、"John Williams"、"David Beckham"、または "Al Green" は保持しません。
これが私が試したことです:
MyObjectContext context = GetContext();
string searchBox = "John David";
Regex regex = new Regex("[a-zA-Z]+", RegexOptions.Singleline);
MatchCollection matches = regex.Matches(searchBox);
IQueryable<Owner> q = ce.Owner;
foreach (Match match in matches)
{
q = q.Where(o => o.FirstName.Contains(match.Value)
|| o.LastName.Contains(match.Value));
}
findOwnerDataGrid.DataSource = q.OrderBy(o => o.LastName);
ただし、最後の一致「David」のみを適用するようです。
必要なことをどのように達成できますか? 異なるまたはより単純なソリューションは大歓迎です。問題があれば、グリッドは読み取り専用なので、バインディングや編集の考慮事項について心配する必要はありません。