change dao

replace Func<TSource, bool> with Expression<Func<TSource, bool>> to
avoid full table search.