Linq部分匹配在列表中? [英] Linq partial match in list?

查看:67
本文介绍了Linq部分匹配在列表中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a list of partial strings that I need to match in a table. I'm using 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 name"

如果n.Company恰好是测试名称",这将匹配,但是如果我只使用"test",则它将不匹配.如何匹配列表中的部分内容?

This will match if the n.Company is exactly "test name" but it doesn't match if I just use "test". How do I match a partial on a list.Contains?

推荐答案

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

You should change your code this way

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部分匹配在列表中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆