列表中的Linq部分匹配?

列表中的Linq部分匹配?,linq,entity-framework,predicatebuilder,Linq,Entity Framework,Predicatebuilder,我有一个表中需要匹配的部分字符串列表。我正在使用PredicateBuilder var predicate = PredicateBuilder.False<Name>(); List<string> names = new List<string>(); names.Add("test name"); **<===matches** names.Add("test"); **<=== doesn't match** predicate = pr

我有一个表中需要匹配的部分字符串列表。我正在使用PredicateBuilder

var predicate = PredicateBuilder.False<Name>();
List<string> names = new List<string>();
names.Add("test name"); **<===matches**
names.Add("test"); **<=== doesn't match**
predicate = predicate.Or(n => names.Contains(n.Company));
var results = (from n in Names
.AsExpandable()
.Where(predicate)
select(new{ n.Company}));
var predicate=PredicateBuilder.False();
列表名称=新列表();

名称。添加(“测试名称”)** 您应该这样更改代码

var predicate = PredicateBuilder.False<Name>();
List<string> names = new List<string>();
names.Add("test name"); 
names.Add("test"); 
foreach(string name in names)    
{
    string temp = name;
    predicate = predicate.Or(n => n.Company.Contains(temp));
}
var results = (from n in Names 
    .AsExpandable()
    .Where(predicate)
    select(new{ n.Company}));
var predicate=PredicateBuilder.False();
列表名称=新列表();
名称。添加(“测试名称”);
名称。添加(“测试”);
foreach(名称中的字符串名称)
{
字符串temp=名称;
谓词=谓词。或(n=>n.Company.Contains(temp));
}
var results=(从名称中的n开始)
.AsExpandable()
.Where(谓词)
选择(新{n.Company}));

这是正确的-我已经用以下Linqpad C#声明验证了这一点。而且,这看起来非常类似于PredicateBuilder主页上的第一个示例——我一直在认真思考这个问题。简单总是好的。谢谢