可以说我对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