我试图从数据库中获取记录,从这个意义上说,它应该获取名称包含"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();
其中excludeTerms包含元素列表,例如
1)Sandy
2)Mandy
3)Larry etc
List<string> excludeTerms = new List<string>();
发布于 2013-12-13 21:04:39
不幸的是,您只能将本地序列与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();
https://stackoverflow.com/questions/20567223
复制相似问题