Linq查询使用包含而不包含

我试图从数据库中获取记录,因为它应该获取记录,其中name包含“searchKey”,而名称不在excludeTerms数组中,并且逗号分隔。 我怎么能在Linq做到这一点?

Rows = (from u in DB.Clients where u.Name.Contains(searchTerm) && !u.Name.Contains(string.Join(",", excludeTerms.Select(s => "'" + s + "'").ToArray())) select new ClientModel { Name = u.FullName, Id = u.Id, }).Take(5).ToList(); 

其中excludeterma包含假设的元素列表

 1)Sandy 2)Mandy 3)Larry etc 

 List excludeTerms = new List(); 

不幸的是,您只能将本地序列与Contains运算符(将其转换为SQL IN运算符)一起使用。 因此,您可以将整个过滤移动到内存中

 Rows = (from u in DB.Clients.AsEnumerable() where u.Name.Contains(searchTerm) && !excludeTerms.Any(s => u.Name.Contains(s)) select new ClientModel { Name = u.FullName, Id = u.Id, }).Take(5).ToList(); 

或者只是过滤掉排除的术语:

 Rows = (from u in DB.Clients where u.Name.Contains(searchTerm) select new ClientModel { Name = u.FullName, Id = u.Id, }).AsEnumerable() .Where(m => !excludeTerms.Any(s => m.Name.Contains(s))) .Take(5).ToList();