【问题标题】:LINQ - a part of string is contained in a list elementsLINQ - 字符串的一部分包含在列表元素中
【发布时间】:2020-04-10 20:46:02
【问题描述】:

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

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 子句,但出现错误:Where(a => listTarget.Any(e => a.city.Contains(e)))
  • 你遇到了什么错误。

标签: list linq contains


【解决方案1】:

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

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

【讨论】:

  • 我收到此错误:“本地序列不能在查询运算符的 LINQ to SQL 实现中使用,但 Contains 运算符除外。”
  • @Alfra 我已经更新了答案。你能验证一下吗
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多