在列表中的LINQ部分匹配?(Linq partial match in list?)

2019-07-18 06:08发布

我有我需要在一个表中以匹配部分字符串列表。 我使用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正是“测试名称”,但它不匹配,如果我只是用“测试”。 如何匹配一个list.Contains的部分?

Answer 1:

你应该改变你的代码这样

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


文章来源: Linq partial match in list?