Entity Framework 5 Code First 用に次のクラスがあるとします。キーワードの配列を求めてすべての業種または部門を検索し、いずれかのキーワードに一致するすべてのリードを返す必要があります。また、リードの名前でも同じキーワードを検索する必要があります。私が立ち往生しているのは、複数のキーワードを検索する方法です。
メインクラス
public class Lead
{
public Guid Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Industry> Industries { get; set; }
public virtual ICollection<Division> Divisions { get; set; }
}
業界クラス
public class Industry
{
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<Lead> Leads { get; set; }
}
師団クラス
public class Division
{
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<Lead> Leads { get; set; }
}
サービス/リポジトリ呼び出し
public IQueryable<Lead> GetByKeywords(string keyword)
{
var result = leadRepository.GetAll().Where
(x => x.Industries.Any(i => i.Name == keyword)
|| x.Divisions.Any(d => d.Name == keyword)
|| x.Name.Contains(keyword));
return result;
}
上記のクエリは、単一のキーワードに対して機能します。しかし、文字列に複数の単語があり、個々のキーワードのいずれかに一致させたい場合は機能しません。