如何在带有 where 子句的字符串列表中使用 contains
how to use contains on list of string with where clause
当我尝试过滤与搜索列表中的任何项目相匹配的记录时,return 没有给我任何信息。请看代码
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”这样的完整字符串,那么它将 return 结果,但如果我尝试仅搜索“Mang”(部分单词),则它不起作用。
试试这个
Console.Write(obj.stringList.Where(x => searchlist.Any(list => x.Contains(list))).Count());
原因是在集合上使用 Contains()
时,会导致比较其项目。所以你问的是 "Mang" == "Mango"
正如在另一个答案中所述,您想确保使用包含比较字符串,但重要的是选择我们将包含应用于哪个字符串
var result = obj.stringList.Where(item => searchlist.Any(searchString => item.Contains(searchString))).Count();
当我尝试过滤与搜索列表中的任何项目相匹配的记录时,return 没有给我任何信息。请看代码
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”这样的完整字符串,那么它将 return 结果,但如果我尝试仅搜索“Mang”(部分单词),则它不起作用。
试试这个
Console.Write(obj.stringList.Where(x => searchlist.Any(list => x.Contains(list))).Count());
原因是在集合上使用 Contains()
时,会导致比较其项目。所以你问的是 "Mang" == "Mango"
正如在另一个答案中所述,您想确保使用包含比较字符串,但重要的是选择我们将包含应用于哪个字符串
var result = obj.stringList.Where(item => searchlist.Any(searchString => item.Contains(searchString))).Count();