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