使用C#在列表项中搜索

时间:2019-03-29 10:49:15

标签: c# list linq linq-to-objects

我有逗号分隔的ID值,例如:3,4,5,7,并且表中的每个记录都不同。

现在,在配置设置中,有一些特定的值,例如:3,4

我需要有只选择与配置值匹配的记录的代码:3,4

2 个答案:

答案 0 :(得分:3)

您可以使用string.split将用逗号分隔的值的字符串转换为单个值的列表。

然后,您可以使用linq从一个列表中找到所有在另一个列表中的值。

var results = tableValues.Where(t => configValues.Contains(t));

答案 1 :(得分:1)

Foreach元素,先将其拆分,然后搜索关键字。 试试这个:

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

public class Program
{
    private static List<string> lstStr = new List<string>
    {
        "1,2,3,4", 
        "3,4,5", 
        "3,4,5,6,7,8,9"
    };

    private static string[] search = new[]{"3", "4"}; // "3,4".Split(',')

    public static void Main()
    {
        foreach(var el in lstStr.Where(x => SearchFunction(x, search)))
        {
            Console.WriteLine(el);
        }
    }

    private static bool SearchFunction(string listItem, string[] search)
    {
        var hashSet = listItem.Split(',').ToHashSet();
        return search.All(hashSet.Contains);
    }
}