LINQ - 字符串的一部分包含在列表元素中



我有一个数据库,其中一列可以包含用逗号分隔的值,如:

madrid, barcelona, paris
rome
paris
amsterdam, madrid
florence, tokyo
paris, barcelona
milan
london, edinburgh
....

然后我有一个列表:

var listTarget = new List<string>{"paris", "amsterdam", "rome"};

在 LINQ 中,我希望提取在 listTarget 中至少包含一个值的所有行,因此结果将是:

madrid, barcelona, paris
rome
paris
amsterdam, madrid

有人可以帮助我吗?

您可以使用分隔符(在本例中为","(进行拆分并比较列表。例如

.Where(x=> x.City.Split(',').Any(c=> listTarget.Contains(c.Trim())));

请原谅我的 vb.net linq,但您可以将其转换为C#。我使用的是linq和正则表达式的组合来获得准确的结果,请查看此代码

DT.AsEnumerable().Where(Function(n) system.Text.RegularExpressions.Regex.IsMatch((cstr(n("A"))),string.Join("|",List_of_strr) )).CopyToDataTable

而且我在这里也使用了数据表,因为我没有数据库。cstr(n("A")中的"A"是列名。

最新更新