列表操作-筛选包含,希望筛选后的结果 能指定比如top 20个内

功能建议 · 781 次浏览
运营:秋风 创建于 2023-02-03 13:19

 

比如我想通过list 列表1万条,来进行筛选包含白色的 文本结果有1000条,但是我只需要前面的20条结果。请问如何便捷高效的去编辑?

如果能在这个里面添加一个,截取top多少条数据,就更好了。不用再后面步骤去解决,节省处理资源

运营:秋风 最后更新于 2023/2/3

回复内容
南风喃 2023-02-03 13:22
#1

可以再把{list2}截取下的


运营:秋风 回复 南风喃 2023-02-03 13:44 :

比如我想通过list 列表1万条,来进行筛选包含白色的 文本结果有1000条,但是我只需要前面的20条结果。请问如何便捷高效的去编辑?

如果能在这个里面添加一个,截取top多少条数据,就更好了。不用再后面步骤去解决,节省处理资源

南风喃 回复 运营:秋风 2023-02-03 14:23 :



$= var a = {list}.Where( x => x.Contains("白色") ).ToList();
if (a.Count <= 20)
{
 return a;
 }
else
{
 return a.GetRange(0,20);
}

过于冗长,楼下发了个简便写法

南风喃 最后更新于 2023-02-03 14:54
南风喃 回复 运营:秋风 2023-02-03 14:43 :

更简便的写法

$={list}.Where( x => x.Contains("白色") ).ToList().Take(20)
运营:秋风 回复 南风喃 2023-02-03 15:22 :

测试过可以用,速度挺快的。大神厉害啊。我想问问,如果是两种或者是三种 包含文本,该怎么写表达式呢?,比如既包含 “白色”和“韩版”和“新款”

运营:秋风 最后更新于 2023-02-03 15:32
南风喃 回复 运营:秋风 2023-02-03 15:33 :
$={list}.Where(w => {keyword}.Any(a => w.Contains(a))).ToList().Take(20)

关键词放到列表变量{keyword}

运营:秋风 回复 南风喃 2023-02-03 15:47 :

大神你好,我测试过,不行。{keyword} 只能筛选 列表第一个的结果,第二个文本无法筛选。

需求逻辑是这样的;在列表中筛选, 该行同时包含三个文本:白色,韩版,新款。 然后输出到列表结果。  


运营:秋风 最后更新于 2023-02-03 15:53
南风喃 回复 运营:秋风 2023-02-03 16:37 :
$={list}.Where(x => Regex.IsMatch(x,@"(?=.*白色)(?=.*韩版)(?=.*新款)^.*")).ToList().Take(20)
运营:秋风 回复 南风喃 2023-02-03 17:10 :

这个很好,可以用。
但是$={list}.Where(x => Regex.IsMatch(x,@"(?=.*{变量A})(?=.*{变量B})(?=.*{变量C})^.*")).ToList().Take(20), 或者是:$${list}.Where(x => Regex.IsMatch(x,@"(?=.*{变量A})(?=.*{变量B})(?=.*{变量C})^.*")).ToList().Take(20)

就无法正常使用了。 能不能把 那几个词弄成变量啊?不太会写代码

臭冬瓜 回复 运营:秋风 2023-02-03 18:36 :

$={list}.Where(x => Regex.IsMatch(x,@"(?=.*"+{变量A}+")(?=.*"+{变量B}+")(?=.*"+{变量C}+")^.*")).ToList().Take(20)


$$是文本,不是表达式

臭冬瓜 最后更新于 2023-02-03 18:41
南风喃 回复 运营:秋风 2023-02-03 20:17 :
$={list}.Where(w => {keyword}.All(a => w.Contains(a))).ToList().Take(20)

这样写可以了。关键词放到列表变量{keyword}

南风喃 回复 运营:秋风 2023-02-03 20:20 :

如果你只有3个关键词,楼上网友臭冬瓜的也可以。不用再合并成关键词列表了

南风喃 回复 运营:秋风 2023-02-03 20:20 :


南风喃 最后更新于 2023-02-03 20:21
运营:秋风 回复 南风喃 2023-02-03 20:48 :

可以,都很好。谢谢啦。

运营:秋风 回复 运营:秋风 2023-02-13 16:55 :

            这个很好用,我已经 用上了。 大神,请问 如果不区分字母的大小写包含,该怎么写表达式呢?

运营:秋风 回复 运营:秋风 2023-02-14 13:43 :

比如:{list} 有一些数据为 abcd123,ABCD123,  然后{keyword} 输入的为:aBcD , 希望都可以筛出 两个结果,不用区分大小写的筛选。

CL 回复 运营:秋风 2023-02-14 13:56 :

$={list}.Where(w => {keyword}.All(a => w.ToLower().Contains(a.ToLower()))).ToList().Take(20)

运营:秋风 回复 CL 2023-02-14 14:15 :

CL牛,搞定啦。谢谢。  我是用来这个代码来  :实时搜索 功能配合使用的。 搜索商品sku名称用的。

回复主贴