Linq частичное совпадение в списке?



У меня есть список частичных строк, которые мне нужно сопоставить в таблице. Я использую 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 точно "имя теста", но это не соответствует, если я просто использую"тест". Как мне сопоставить частичное в списке.Содержит?

678   1  

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

Comments

    Ничего не найдено.