gpt4 book ai didi

c# - 使用包含和不包含的 Linq 查询

转载 作者:太空狗 更新时间:2023-10-29 22:26:38 26 4
gpt4 key购买 nike

我正在尝试从数据库中获取记录它应该 getrecords 其中名称包含“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>();

最佳答案

不幸的是,您只能将本地序列与 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();

关于c# - 使用包含和不包含的 Linq 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20567223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com