当前位置: 首页 > 知识库问答 >
问题:

如何检查字符串是否存在于ef Core中逗号分隔的串联列上?

颛孙镜
2023-03-14

所以我想看看一个字符串是否存在于多个用逗号分隔的串联列上:

例如,我的表有列地址城市状态如下所示:

因此逗号分隔的串联字符串如下所示:

123 St., Farmtown, MN
456 Road, Austin, TX
789 Way, Emerald, RH

注意每个逗号后面的空格

使用LINQ方法语法,以便能够输入像“st,farm”这样的字符串并获得第一行

    var inputString = "St., Farm"

    Expression<Func<MyTable, bool>> validAddressInput =
    x => string.Concat(x.Address, ", ", x.City, ", ", x.StateProvince)
    .Contains(inputString);

    var results = _context.MyTable.Where(validAddressInput).ToList()

    // results should contain that 1st row
InvalidOperationException - The LINQ expression ' ... ' could not be translated.
Either rewrite the query in a form that can be translated
or switch to client evaluation explicitly by inserting a call to 'AsEnumerable' 'AsAsyncEnumerable' 'ToList' or 'ToListAsync'.

很明显,它似乎无法将string.concat(...)转换为原始SQL,但我不确定将其更改为什么。

共有1个答案

拓拔耀
2023-03-14

因此,虽然string.concat和interpolation$“{...}”不起作用,但只需在字符串之间使用+即可:

    Expression<Func<MyTable, bool>> validAddressInput =
    x => (x.Address + ", " + x.City + ", " + x.StateProvince)
    .Contains(inputString);
 类似资料:
  • 在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如:

  • 问题内容: 我有一张这样的桌子: 我想测试3和15是否在称为NUMBERS的Blob中。并可以看到无法使用LIKE %% 仅选择ID为2且具有三个scoulb的行… 问题答案: 这个也可以: 使用IN将查找以逗号分隔的字符串,例如。这两个 在此页面上找到的信息:

  • 问题内容: 你最好采用哪种方法来连接序列中的字符串,以便在每两个连续对之间添加一个逗号。也就是说,例如,你如何映射到(案例和该分别映射到和。) 我通常会使用类似的东西,但也会感到有些不满意。 问题答案: 如果列表包含数字,则此功能将无效。 并且如果列表包含非字符串类型(such as integers, floats, bools, None),则执行以下操作:

  • 问题内容: 我需要在数据库中填充纬度和经度列,但是原始信息存储为单个字符串 例如。 我猜想TRIM命令在这里很有用,但是我不知道如何告诉它每半个部分都精确地停在逗号上。 我希望能够提出一个简单的UPDATE查询,如下所示: 但是显然在LTRIM和RTRIM部分中需要做一些额外的工作,因此我只选择数据,但不包括UDFChar1中的逗号。 关于如何实现这一目标的任何想法? 问题答案: 请试试: 和 样

  • 问题内容: 我有一个长度未知的字符串,看起来像这样 将这些字符串用逗号分隔的最佳方法是什么,以便每个单词都可以成为的元素? 例如 问题答案: 你可以这样做: 基本上,该方法将根据你正在传递的(在这种情况下)定界符来分割字符串,并将返回字符串数组。 但是,你似乎位于字符串列表而不是数组之后,因此必须使用该实用程序将数组转换为列表。就像供你参考一样,你也可以这样做: 但是通常最好是对接口进行编程,而不

  • 问题内容: 如何将逗号分隔的字符串拆分为存储过程中的字符串,并将其插入表字段中? 使用Firebird 2.5 问题答案: 这里有一个示例如何分割字符串并将子字符串写入表中: