我有一个数据库,其中一列可以包含用逗号分隔的值,如:
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"
是列名。