3

複数のキーワードを受け入れる検索を構築しようとしています (スペース区切りまたはコンマ、それは問題ではありません)。私は現在これを持っています

public IQueryable<Post> Search(string criteria, int x)
    {
        return
            (_db.Posts.Where(p => p.IsActive && 
                (p.PostText.Contains(criteria) || p.Weather.Contains(criteria) || p.Location.Contains(criteria))
            ).OrderByDescending(p => p.PostDate)).Take(x);
    }

しかし、それは完全一致のみを返します。各キーワードを検索して x 件の結果を返すにはどうすればよいですか? ところで、それはORであるはずです。

ありがとう

4

3 に答える 3

0

完全一致が必要なキーワードに問題がない場合は、次のようにします。

var allCriteria = criteria.Split(',');

db.Posts.Where(p => allCriteria.Contains(p.PostText) || allCriteria.Contains(p.Weather)  || allCriteria.Contains(p.Location)
于 2013-06-12T22:05:38.200 に答える
-2
public IQueryable<Post> Search(string criteria, int x)
{
  var allCriteria = criteria.Split(',');

  var result=db.Posts.Where(p => 
      allCriteria.Any(c=>p.PostText.Contains(c))
      || allCriteria.Any(c=>p.Weather.Contains(c))
      || allCriteria.Any(c=>p.Location.Contains(c))
    ).Where(p=>p.IsActive)
    .OrderByDescending(p => p.PostDate)
    .Take(x);
  return result;
}
于 2013-06-13T02:32:02.480 に答える