Linq部分匹配列表?

时间:2013-01-15 23:05:10

标签: 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 = predicate.Or(n => names.Contains(n.Company));
var results = (from n in Names
.AsExpandable()
.Where(predicate)
select(new{ n.Company}));

n.Company =“测试名称”

如果n.Company正好是“测试名称”,那么这将匹配,但如果我只使用“test”则它不匹配。如何匹配列表中的部分。包含?

1 个答案:

答案 0 :(得分:6)

您应该以这种方式更改代码

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}));