c# - 在 C# 中动态评估字符串条件

标签 c# .net linq string dynamic

我有一个字符串集合。我需要从这个集合字符串中找出满足某些条件的字符串,例如该字符串包含 A 和 B 或 C。这些条件由用户指定,因此它们是动态的。在 Linq 中它应该是这样的,

List<String> items = new List<string> { "sdsdsd", "sdsd", "abc"};

var query = from item in items
            where  item.Contains("a") && item.Contains("b") || item.Contains("c")                         
            select item;

我想使 where 条件动态化,以便它可以处理用户的任何输入。是否可以在不使用任何外部库的情况下在 C# 中执行此操作。也许使用 Linq 或其他内置于 .Net 框架中的东西。

谢谢, 加里

最佳答案

虽然您不想使用外部库,但有一个非常棒,那就是 PredicateBuilder .谓词生成器允许您建立一组谓词来匹配项目,例如:

var predicate = PredicateBuilder.True<string>();
predicate = predicate
    .And(p => p.Contains("a"))
    .And(p => p.Contains("b"));

var matches = items.Where(predicate);

关于c# - 在 C# 中动态评估字符串条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186170/

相关文章:

c# - 创建一个以数字开头的属性

c# - WebControl 和 CompositeControl 之间的区别?

c# - 如何使用管理员凭据运行 C# 应用程序?

c# - Kendo Grid 将所有数据打印到 Excel,而不仅仅是可见数据

c# - 如何区分编译器生成的类和 .NET 中的用户类

c# - Duck Typing DynamicObject 派生

c# - 将 SQL 查询转换为 LINQ 查询,但仅选择特定值返回

c# - 查找包含最接近属性值的对象的列表索引

java - 将 Linq 查询转换为 Java 8

c# - 用字符串拆分字符串时出错