【问题标题】:How to filter a list using another list in LINQ C#如何使用 LINQ C# 中的另一个列表过滤列表
【发布时间】:2021-02-06 11:53:49
【问题描述】:

需要过滤的列表包含以下数据:“1000”、“1000A”、“1000B”、“2000”、“2000C”、“2003”、“2006A”

我正在过滤的列表包含以下数据:“1000”、“2000”、“2003”

预期输出:1000'、'1000A'、'1000B'、'2000'、'2000C'、'2003' (预期输出就像我们在 SQL 服务器 LIKE 运算符中所做的那样)

【问题讨论】:

  • 使用 Any : string[] output = input1.Where(x => input2.Any(y => x.Contains(y))).ToArray();

标签: c# .net list linq collections


【解决方案1】:

假设你有两个像下面这样的类,

public class MainClass
{
    public string ActualValue { get; set; }
}
public class FilterClass
{
    public string Description { get; set; }
}

我正在加载一些这样的虚拟数据,

        List<MainClass> mainList = new List<MainClass>();
        mainList.Add(new MainClass() { ActualValue = "1000" });
        mainList.Add(new MainClass() { ActualValue = "1000A" });
        mainList.Add(new MainClass() { ActualValue = "1002F" });
        mainList.Add(new MainClass() { ActualValue = "1002A" });
        mainList.Add(new MainClass() { ActualValue = "1003" });

        List<FilterClass> filterList = new List<FilterClass>();
        filterList.Add(new FilterClass() { Description = "1003" });
        filterList.Add(new FilterClass() { Description = "1002" });

O/P 将根据您的要求提供,

        var output1 = mainList.Where(x => filterList.Any(y => x.ActualValue.Contains(y.Description))).ToList();

【讨论】:

  • 它有帮助。谢谢
【解决方案2】:

尝试使用正则表达式,如下所示:

var list1 = new List<string>{"1000", "1000A", "1000B","2000","2000A","3000BV"};
var list2 = new List<string>{"1000","2000"};

var result = list1.Where(x => list2.Any(y => Regex.IsMatch(x, $".*{y}.*"))).ToList();

注意:.* 相当于 SQL 中的%

【讨论】:

    【解决方案3】:

    你可以这样使用 linq:

    var filterList = new List<string>(){"1000", "1000A", "1000B", "2000", "2000C", "2003", "2006A"};
    var filterLikeList = new List<string>(){"1000", "2000", "2003"};
    
    var results = filterList.Where(x=> filterLikeList.Any(y=>x.Contains(y)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多