首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

动态Linq字符串“Contains”表达式

在使用动态 LINQ 时,如果你想构建一个基于字符串 "Contains" 的表达式,你可以使用 Expression.Call 方法来创建一个 Contains 调用表达式

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

public class DynamicLinqContainsExample
{
    public static void Main()
    {
        List<string> items = new List<string> { "apple", "banana", "cherry", "orange" };

        string searchString = "an";

        // 创建参数表达式
        ParameterExpression parameter = Expression.Parameter(typeof(string), "x");

        // 创建成员表达式(如果需要从对象中获取字符串属性)
        // 假设我们有一个类 Item { public string Name { get; set; } }
        // MemberExpression member = Expression.PropertyOrField(parameter, "Name");

        // 字符串 "Contains" 方法的表达式
        MethodCallExpression containsMethod = Expression.Call(
            parameter,
            typeof(string).GetMethod("Contains", new[] { typeof(string) }),
            Expression.Constant(searchString)
        );

        // 创建 Lambda 表达式
        Expression<Func<string, bool>> lambda = Expression.Lambda<Func<string, bool>>(containsMethod, parameter);

        // 编译 Lambda 表达式
        Func<string, bool> compiledLambda = lambda.Compile();

        // 使用编译后的 Lambda 表达式进行过滤
        var filteredItems = items.Where(compiledLambda).ToList();

        Console.WriteLine("Filtered items:");
        foreach (var item in filteredItems)
        {
            Console.WriteLine(item);
        }
    }
}

这个示例首先创建了一个包含一组成员的列表。然后,它为字符串 "Contains" 方法构建了一个表达式,将其与要搜索的字符串(searchString)进行了比较。接下来,它创建了一个Lambda表达式,并使用compiledLambda编译此表达式。最后,它使用编译后的Lambda表达式过滤给定的列表。

你可以根据需要修改这个示例,例如从对象列表中提取字符串属性或更改搜索条件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

LinQ 查询表达式

LinQ 查询表达式 發佈於 2019-02-20 最近的工作是对一个复杂数据库进行操作,模型类之间的关系很复杂。...操作方式使用了 LINQ,之前一直对 LINQ 的查询语法不太喜欢,这次使用之后,感觉比方法语法更容易接受,因此详细总结一下查询表达式的语法。 数据查询历来都表示为简单的字符串,没有编译时类型检查。...借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。 LINQ 最明显的”语言集成”部分就是查询表达式。...还可以使用 into 关键字,使 join 或 group 子句的结果可以充当相同查询表达式中的其他查询子句的源。 查询变量 在 LINQ 中,查询变量是存储查询而不是查询结果的任何变量。...在 LINQ 中,联接操作是对元素属于不同类型的对象序列执行。

1.9K20
  • .NET深入解析LINQ框架(六:LINQ执行表达式)

    一:LINQ执行表达式 在研究LINQ的过程中,参考了很多技术文章还有技术书籍,毫无疑问的是Linq to Provider的调用入口都是将Lambda表达式解析成Expression表达式对象,...表达式的处理可以分为常量表达式和动态变量表达式,常量表达式在VS编译的时候就可以直接计算表达式是否是true、false。...而动态变量表达式则需要在后期进行表达式解析的时候计算的,换句话说Linq to Provider中的Provider提供程序是具有高智商的表达式执行器,不仅仅是对表达式等价解析中间还夹杂着对表达式解析的自定义逻辑代码...打个比方,我们都有过拼接查询条件的经历,界面上有N个查询条件字段,需要根据用户是否填写了哪个字段进行动态的拼接进LINQ语句中去。...truckModel.TRUCK_MODEL_CODE)) 5 queryList = queryList.Where(truck => truck.TRUCK_MODEL_CODE.Contains

    1.3K10

    .NET 现代化动态 LINQ 库 Gridify

    动态 LINQ 大家好,我是等天黑, 这次继续介绍开源项目,Gridify 是一个现代化动态 LINQ 库,它以最简单的方式将您的字符串转换为 LINQ 查询,并且有出色的性能。...LINQ 查询通常是在程序中硬编码的, 而字符串可以来自于数据库,Http 请求等等, 可以在合适的场景中转换成LINQ查询,也就是动态 LINQ。 使用示例 让我们看看下面几个示例。...public int Age { get; set; } public string Name { get; set; } } 先看一个简单的, 此时 p1 和 p2 是相等的 // 字符串....ToList(); 模糊查询 people.AsQueryable().ApplyFiltering("Name=*a").ToList(); people.Where(x => x.Name.Contains...,然后转换成表达式, 如您所见,Gridify 的结果和原生 linq 最接近。

    68140

    C#进阶-LINQ表达式基础语法

    一、LINQ表达式学前准备在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。...descending orderby u.name select u).ToList();/* C#版本2 */List userList = list.Where(u => u.name.Contains...三、LINQ表达式总结在现代编程中,Linq(Language Integrated Query)表达式是.NET语言中的一项强大功能,允许开发者以声明式方式查询和操作数据。...1、LINQ表达式的特点集成性:Linq表达式完美集成于C#和VB.NET等语言,提供一致的查询能力。可读性:Linq语法简洁,易于编写和理解,大大提高了代码的可读性。...to Entities关系型和非关系型数据库高5/5支持复杂的数据查询和操作Linq to Objects内存中的对象集合低5/5适用于小型集合的快速查询3、LINQ表达式总结Linq技术为.NET开发者提供了一个强大的工具

    27965

    C#进阶-LINQ表达式之投影

    本篇文章我们将演示LINQ扩展包语法里的投影特性,用投影实现LINQ结果集的类型转换。目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。...LINQ语法第一次接触难免感到陌生,最好的学习方式就是在项目中多去使用,相信会有很多感悟。...一、LINQ表达式学前准备 在学习之前,我们要做一些准备工作,我们需要创建User对象和包含User对象的集合,作为后面查询和输出的数据源。...u.name, u.age }).ToList(); /* 投影后集合 */ [{"Zhang San", 21}, {"Li Si", 21}, {"Wang Wu", 18}] 三、投影总结 在LINQ...投影是LINQ中一个极其有用的功能,它通过允许开发者自定义数据的选择和处理,极大地提升了代码的灵活性和数据操作的效率。

    15798

    Linq基础知识小记二

    书写Linq查询有两种方法,第一种是通过方法语法(也就是扩展方法),第二种是查询表达式语法. 1、方法语法 方法语法就是通过扩展方法和Lambda表达式来创建查询 (1)、链式查询 这种查询方式很多语言都支持...,通过一段实例,介绍Linq的链式查询.需求如下:找出字符串数组中含有字母e的字符穿,并按长度排序,最后将结果转为大写.代码如下: string[] names = {"James","Kobe","Curry...关于类似的方法还有很多,推荐去研究下System.Linq.Enumerable类 2、Linq查询表达式语法 Linq查询表达式语法写出的查询比较类似与Sql语句,是C#3.0加入的,虽然Linq查询表达式看上去类似于...Sql查询,但实际上它并不是建立在Sql语句上,而是建立在函数式编程语言如LISP和Haskell中的list comprehensions(列表解析)功能之上,也就是所编译器会对Linq查询表达式进行处理...下面对1中链式查询的的例子进行改写,使用Linq查询表达式语法,代码如下: string[] names = { "James", "Kobe", "Curry", "Durrent" }; var result

    1.3K70
    领券