用于数组元素的 LIKE 查询的 LINQ

2023-11-27

假设我有一个数组,我想对 varchar 执行 LINQ 查询,返回在 varchar 中任何位置具有数组元素的任何记录。

这样的事情会很甜蜜。

string[] industries = { "airline", "railroad" }

var query = 来自联系人中的 c,其中 c.industry.LikeAnyElement(industries) 选择 c


这实际上是我在我的“表达你自己” 演示文稿,对于在常规 LINQ 中很难完成的事情;据我所知,最简单的方法是手动编写谓词。我使用下面的示例(注意它同样适用于StartsWith etc):

    using (var ctx = new NorthwindDataContext())
    {
        ctx.Log = Console.Out;
        var data = ctx.Customers.WhereTrueForAny(
            s => cust => cust.CompanyName.Contains(s),
            "a", "de", "s").ToArray();
    }
// ...
public static class QueryableExt
{
    public static IQueryable<TSource> WhereTrueForAny<TSource, TValue>(
        this IQueryable<TSource> source,
        Func<TValue, Expression<Func<TSource, bool>>> selector,
        params TValue[] values)
    {
        return source.Where(BuildTrueForAny(selector, values));
    }
    public static Expression<Func<TSource, bool>> BuildTrueForAny<TSource, TValue>(
        Func<TValue, Expression<Func<TSource, bool>>> selector,
        params TValue[] values)
    {
        if (selector == null) throw new ArgumentNullException("selector");
        if (values == null) throw new ArgumentNullException("values");
        if (values.Length == 0) return x => true;
        if (values.Length == 1) return selector(values[0]);

        var param = Expression.Parameter(typeof(TSource), "x");
        Expression body = Expression.Invoke(selector(values[0]), param);
        for (int i = 1; i < values.Length; i++)
        {
            body = Expression.OrElse(body,
                Expression.Invoke(selector(values[i]), param));
        }
        return Expression.Lambda<Func<TSource, bool>>(body, param);
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于数组元素的 LIKE 查询的 LINQ 的相关文章

随机推荐

  • 删除所有以前版本的 python

    我有一些经验C and Fortran 我想开始使用python对于我的后处理 因为我开始意识到效率有多低MATLAB是为了我需要做的事情 主要涉及数百万个点的图 我已经有几个版本了python从每次我想开始使用时就安装了 现在已经变得一团
  • HTML5:一个部分中有多个页脚/页眉

    我知道您可以在一个页面中有多个页眉 页脚 例如
  • 在 Xcode 12.5 中打开 Xcode 13.0 项目

    当我尝试打开 Xcode 项目时 我收到一条错误消息 无法打开 Users xcodeproj 处的项目 因为它 是未来的 Xcode 项目文件格式 调整项目格式 使用兼容版本的 Xcode 来允许它通过此打开 Xcode 的版本 我目前使
  • 盒子阴影仅在左右两侧

    我需要仅在元素的右侧和左侧制作盒子阴影 它应该褪色并且顶部和底部变薄 它也不应该溢出顶部和底部 主要问题是我无法阻止阴影在元素的顶部和底部溢出 这就是我所拥有的 HTML div div CSS div box shadow 0px 0px
  • React-router v4 页面刷新不起作用

    我可能错过了历史或其他什么但是当我refresh子路由上的页面 例如 login或我得到的任何其他路线 403 禁忌 代码 拒绝访问 消息 访问被拒绝 请求 ID 075CAA73BDC6F1B9 主机 ID O1n36xVCoeu aLa
  • PHP/MySQL - “最高评价”的算法

    所以我只是建立了一个星级评级系统 并尝试提出一种算法来列出 最高评级 的项目 为简单起见 以下是各列 item name average rating a decimal from 1 to 5 num votes 我正在尝试确定票数和评分
  • 在 dockerfile 中的 FROM 中使用 ARG

    问题陈述 我需要根据提供的arg从两个不同的url中提取docker projectS和project ARG url docker local artifactory com projectA By default its for A R
  • 重置 Django 缓存模板加载器的缓存

    Django 1 2 引入了一个新的模板加载器 它将数据存储在缓存中 django template loaders cached Loader 不幸的是 我未能找到有关缓存如何失效以及何时以及如何重置的任何信息 我想在我的服务器上使用它
  • TypeScript:reduce 函数 - 没有重载与此调用匹配

    尝试编写一个基本的减速器以从对象数组中返回键 的值 数组 某些键可能丢失或未定义 My code const data Key 56 Key undefined Key 44 const keys data reduce prev curr
  • $(document).ready() 和在正文末尾包含脚本有什么区别?

    在 jQuery 的 document ready 上执行 JavaScript 函数与将其包含在 HTML 正文末尾的脚本标记中之间有什么区别 Thanks DLiKS 里面的 JavaScript 代码
  • 为什么 n^O(1) 意味着“多项式时间”?

    An algorithm runs in polynomial time if it s runtime is O nk for some k However I ve also seen polynomial time defined a
  • 获取当前笔记本电脑盖子状态

    我正在编写一个 C 应用程序 专门用于笔记本电脑 我想了解盖子的状态 即何时打开以及何时关闭 我已经使用了 pInvoke 以及微软的RegisterPowerSettingNotification函数在 的帮助下这个答案 因此 通过上述内
  • PDFSharp:使用自动换行测量长文本的高度

    PDFSharp 在绘制长文本部分时支持自动文本换行 textFormatter DrawString text font XBrushes Black new XRect x y textAreaWidth 1000 XStringFor
  • 如何在列标题中使用希腊字母在 rmarkdown 中创建表格?

    我正在尝试在 rmarkdown 中创建一个表kable and kableExtra我想把希腊字母放在add header above功能 kable a format latex booktabs T longtable T gt ka
  • 更改多个 Python 实例中的变量

    是否可以同时设置类的所有实例的变量 我有一个简化的例子如下 class Object def init self self speed 0 instance0 Object instance1 Object instance2 Object
  • CSS 有类似 jQuery 的 :has() 的东西吗?

    在CSS 任何版本 中 是否有类似的东西 或者任何其他方式来做类似的事情 has jQuery 中的选择器 jQuery has selector 描述 选择元素 至少包含一个元素 匹配指定的选择器 http api jquery com
  • 如何向使用 ggplot2 创建的分区统计图添加标签?

    我正在尝试向我在 ggplot2 中创建的分区统计图添加文本注释 但目前失败 我正在寻求用名称标记每个多边形 地方政府区域 在我继续之前 我知道有人在 SO 上提出了类似的问题 并在 非常好的 教程中详细介绍了这一问题here 但是 我尝试
  • 将子目录(已重命名!)分离到新的存储库中

    我有一个存储库 我想将其目录之一分离到一个新的存储库中 This是一个完美的起点 但是有一个警告 我想要分离的目录在某个时候被重命名 如果我按照该帖子中的解决方案使用目录的新名称 那么我似乎会丢失重命名之前的历史记录 有什么想法可以调整以使
  • 在任意 scala 代码位置期间放入解释器

    我有 Python 背景 我可以在代码中的任何位置添加 import pdb pdb set trace 在运行时 我将在该位置进入交互式解释器 scala 是否有等效的 或者这在运行时不可能 是的 在 Scala 2 8 上可以 请注意
  • 用于数组元素的 LIKE 查询的 LINQ

    假设我有一个数组 我想对 varchar 执行 LINQ 查询 返回在 varchar 中任何位置具有数组元素的任何记录 这样的事情会很甜蜜 string industries airline railroad var query 来自联系