代码之家  ›  专栏  ›  技术社区  ›  Daniel

LINQ从列表的dataTable中提取部分匹配

  •  0
  • Daniel  · 技术社区  · 3 年前

    我试图从一个dataTable中提取所有行,对于列“a”,其末尾有一个列表中的字符串。

    例如:

    数据表

    ID     A
    1      1220
    2      1221
    3      1223
    

    列表

    {"20","23"}
    

    返回 1220年 3 1223

    (From x In dt.AsEnumerable() 
    Where list.Any(Function(l) l.EndsWith(x("number").ToString))
    Select x).CopyToDataTable
    

    这就是我到目前为止所说的,但它只在列表中有完全匹配的情况下提取一行,比如 12220 对于 20 它不会返回任何内容。

    你能帮忙吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   DotNet Developer    3 年前

    您将问题标记为 C# 。在C#中,查询将为

    dataTable
        .Where(r => list.Any(s => r.A.EndsWith(s)))
    

    我尝试的测试代码是

    var array = dataSet1
        .DataTable1
        .Where(r => list.Any(s => r.A.EndsWith(s)))
        .ToArray();
    

    其中,dataSet1是强类型dataset,DataTable1是具有列的表 Id A