可以說我對Entity Framework 5 Code First有以下幾個類。我需要爲所有行業或部門搜索一組關鍵字,返回與任何關鍵字匹配的所有潛在客戶。我還需要搜索相同關鍵字的潛在客戶名稱。我堅持的是如何搜索多個關鍵字。Linq中的搜索查詢用EF
主類
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;
}
以上查詢適用於單個關鍵字。但是,如果我在字符串中包含多個單詞並且要匹配任何單個關鍵字,那麼它就不起作用。
這與一個小小的變化(我認爲錯字)工作。該行:x.Divisions.Any(d => keywords.Any(k => k == d.Name))我修改並返回正確的值。 – roadsunknown
碰到一個問題。最後一行。 Lead.Name(x.Name)可以包含多個單詞,並且關鍵字需要與任何單詞匹配。由於Linq不允許你分割一個字符串(使用string.split(''),是否有另一種方式在Linq中做到這一點。 – roadsunknown
我更新了答案 – ethicallogics