在c#中过滤字符串列表[重复]

Posted

技术标签:

【中文标题】在c#中过滤字符串列表[重复]【英文标题】:Filter a List of string in c# [duplicate] 【发布时间】:2020-11-13 08:11:33 【问题描述】:

我有一个字符串列表

List<string> str = new List<string>
str.Add("test1");
str.Add("test2");
str.Add("test3");

经过一些处理后,此列表会转到某个服务,在该服务中列表会被修改,并且可以具有三个值“test1”、“test2”、“test3”中的任何一个或所有这些值。

我想根据以下字符串过滤此列表:“test1”、“test2”、“test3”,并将其转储到另一个对象中。

如何在不提供硬编码字符串值的情况下对其进行过滤?

我如何在 C# 中使用 Linq 做到这一点?

【问题讨论】:

你有没有尝试过? Where() ? filter this list based on the strings: "test1"," test2", "test3" 到底是什么意思?该列表已经包含这些值。预期的结果是什么? 如何在不提供硬编码字符串值的情况下做到这一点? var someVar = "your search string"; bool listContains = str.Contains(someVar) 【参考方案1】:

不确定我是否 100% 理解您,但如果您需要查看列表的元素是否包含字符序列,请查看 LINQ 包含的内容。如果您需要示例,请看这里:https://dotnettutorials.net/lesson/linq-contains-method/

我在下面使用 Db,但想法有点相同,但语法相似。我想我必须先将其更改为 IQueryable。

使用这种方法创建一个方法,但不是 e.NewTextValue 而是将您的搜索字符串作为输入或其他内容,这是我的 XF 示例:


var searchList = strList.Where(x => x.Name.ToLower().Contains(e.NewTextValue.ToLower()) || 
                x.CategoryName.ToLower().Contains(e.NewTextValue.ToLower()) || x.Comments.ToLower().Contains(e.NewTextValue.ToLower()) ||
                x.SKU.ToLower().Contains(e.NewTextValue.ToLower()));

【讨论】:

以上是关于在c#中过滤字符串列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

LINQ查询中的C#多个OR条件[重复]

显示列表中的重复项 c#

从列表中过滤为查询字符串 postgresql flask sqlalchemy [重复]

使用 re.match 过滤字符串列表时失败 [重复]

Python过滤器功能-如果列表中的单词以特定字符开头[重复]

按字符串属性C#对对象列表进行排序[重复]