【问题标题】:Filter a List of string in c# [duplicate]在c#中过滤字符串列表[重复]
【发布时间】: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)

标签: c# linq


【解决方案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()));

【讨论】:

    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 2013-04-29
    • 2021-12-09
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多