Поиск в элементе списка с использованием C # - PullRequest
0 голосов
/ 29 марта 2019

У меня есть значения Id, разделенные запятыми, например: 3,4,5,7, и это отличается для каждой записи в таблице.

Теперь в настройках конфигурации есть конкретные значения, такие как: 3,4

Мне нужен код, который будет выбирать только те записи, которые соответствуют значениям конфигурации: 3,4

Ответы [ 2 ]

3 голосов
/ 29 марта 2019

Вы можете использовать string.split, чтобы преобразовать строку значений, разделенных запятыми, в список отдельных значений.

Затем вы можете использовать linq, чтобы найти все значения из одного списка, которые также находятся в другом.

var results = tableValues.Where(t => configValues.Contains(t));
1 голос
/ 29 марта 2019

Элемент 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);
    }
}
...