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

gar*_*ary 6 .net c# 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;
Run Code Online (Sandbox Code Playgroud)

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

谢谢,加里

Mat*_*ott 5

虽然你不想使用外部库,但有一个很棒,那就是PredicateBuilder.谓词构建器允许您构建一组谓词以匹配项目,例如:

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

var matches = items.Where(predicate);
Run Code Online (Sandbox Code Playgroud)


Sim*_* D. 1

如果您想自己完成,请从这里开始: 动态谓词: http://msdn.microsoft.com/en-us/library/bb513731.aspx 动态表达式树: http://msdn.microsoft.com/en -us/library/bb882637.aspx

我认为这超出了您的预期,并且强烈建议使用一些(轻量级)现成且经过测试的库,它可以为您从用户字符串到运行时查询的转换。