Swe*_*tie 6 c# sql-server asp.net linq-to-sql asp.net-mvc-3
我试图从数据库中获取记录,因为它应该获取其中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();
Run Code Online (Sandbox Code Playgroud)
其中excludeterma包含假设的元素列表
1)Sandy
2)Mandy
3)Larry etc
Run Code Online (Sandbox Code Playgroud)
List<string> excludeTerms = new List<string>();
Run Code Online (Sandbox Code Playgroud)
Ser*_*kiy 11
遗憾的是,您只能将本地序列与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();
Run Code Online (Sandbox Code Playgroud)
或者只是过滤掉排除的术语:
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38410 次 |
| 最近记录: |