【问题标题】:how to use contains on list of string with where clause如何在带有 where 子句的字符串列表中使用包含
【发布时间】:2021-06-27 04:49:56
【问题描述】:

当我尝试过滤与搜索列表中的任何项目匹配的记录时,它不会返回任何内容。请看代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

class Test {

    // Main Method
    public static void Main(String[] args)
    {
        List<String> searchlist = new List<String>();
        searchlist.Add("Mang");
        searchlist.Add("Apple");
        
        List<String> firstlist = new List<String>();
        firstlist.Add("Mango");
        firstlist.Add("Apple");
        firstlist.Add("Orange");
        firstlist.Add("Grapes");
        
        test1 obj = new test1();
        obj.stringList = firstlist;

        Console.Write(obj.stringList.Where(x=> searchlist.Contains(x)).Count());
    }
    
    public class test1
    {
        public string id { get; set; }
        public string name { get; set; }
        public List<String> stringList { get; set; }
    }
}

在上面的例子中,如果我将传递一个完整的字符串,如“Mango”,那么它会返回结果,但如果我尝试只搜索“Mang”(部分单词),那么它就不起作用了。

【问题讨论】:

    标签: c# list contains


    【解决方案1】:

    试试这个

    Console.Write(obj.stringList.Where(x => searchlist.Any(list => x.Contains(list))).Count());
    

    【讨论】:

      【解决方案2】:

      原因是当在集合上使用Contains() 时,会导致比较其项目。所以你问"Mang" == "Mango"

      正如在另一个答案中所述,您希望确保使用包含比较字符串,但重要的是选择我们应用包含的字符串

      var result = obj.stringList.Where(item => searchlist.Any(searchString => item.Contains(searchString))).Count();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 2022-11-29
        • 1970-01-01
        • 2012-03-28
        相关资源
        最近更新 更多