C# 列表中的类SQL搜索和C中的LINQ#

C# 列表中的类SQL搜索和C中的LINQ#,c#,linq,C#,Linq,我有一个列表,其中包含需要排除的单词列表 我的方法是创建一个包含这些单词的列表,并使用Linq进行搜索 List<string> lstExcludeLibs = new List<string>() { "CONFIG", "BOARDSUPPORTPACKAGE", "COMMONINTERFACE", ".H", }; string strSearch = "BoardSupportPackageSamsung"; bool has = lstExcludeLibs

我有一个列表,其中包含需要排除的单词列表

我的方法是创建一个包含这些单词的列表,并使用Linq进行搜索

List<string> lstExcludeLibs = new List<string>() { "CONFIG", "BOARDSUPPORTPACKAGE", "COMMONINTERFACE", ".H", };
string strSearch = "BoardSupportPackageSamsung";
bool has = lstExcludeLibs.Any(cus => lstExcludeLibs.Contains(strSearch.ToUpper()));
List lstExcludeLibs=new List();
字符串strearch=“BoardSupportPackageSamsung”;
bool has=lstExcludeLibs.Any(cus=>lstExcludeLibs.Contains(strearch.ToUpper());
我想找出字符串strearch的一部分存在于lstExcludedLibs中

结果是,
。任何
都只查找精确匹配。是否有可能使用like或通配符搜索

在林克这可能吗

我本可以使用foreach和contains实现它,但我想使用LINQ使它更简单


编辑:我尝试了列表。包含,但似乎也不起作用

我认为行应该是:

bool has = lstExcludeLibs.Any(cus => cus.Contains(strSearch.ToUpper()));

我认为应该是:

bool has = lstExcludeLibs.Any(cus => cus.Contains(strSearch.ToUpper()));

你搞错了,应该是:-

List<string> lstExcludeLibs = new List<string>() { "CONFIG", "BOARDSUPPORTPACKAGE", "COMMONINTERFACE", ".H", };
string strSearch = "BoardSupportPackageSamsung";
bool has = lstExcludeLibs.Any(cus => strSearch.ToUpper().Contains(cus));
List lstExcludeLibs=new List();
字符串strearch=“BoardSupportPackageSamsung”;
bool has=lstExcludeLibs.Any(cus=>strearch.ToUpper().Contains(cus));

顺便说一句,这只是一个观察,但是,IMHO,您的变量名前缀'lst'和'str'应该是ommitted。这是对匈牙利符号的错误解释,是多余的。

如果您理解错误,应该是:-

List<string> lstExcludeLibs = new List<string>() { "CONFIG", "BOARDSUPPORTPACKAGE", "COMMONINTERFACE", ".H", };
string strSearch = "BoardSupportPackageSamsung";
bool has = lstExcludeLibs.Any(cus => strSearch.ToUpper().Contains(cus));
List lstExcludeLibs=new List();
字符串strearch=“BoardSupportPackageSamsung”;
bool has=lstExcludeLibs.Any(cus=>strearch.ToUpper().Contains(cus));

顺便说一句,这只是一个观察,但是,IMHO,您的变量名前缀'lst'和'str'应该是ommitted。这是对匈牙利符号的错误解释,是多余的。

这对您有用吗

bool has = lstExcludeLibs.Any(cus => strSearch.ToUpper().Contains(cus));


这对你有用吗

bool has = lstExcludeLibs.Any(cus => strSearch.ToUpper().Contains(cus));


这只是一个观察,但是,IMHO,您的变量名前缀'lst'和'str'应该是ommitted。这是对匈牙利符号的错误解释,是多余的。我在下面的回答中添加了注释只是一个观察,但是,IMHO,您的变量名前缀“lst”和“str”应该被注释。这是对匈牙利符号的错误解释,是多余的。我在下面的回答中添加了注释。以我的例子来说,你的建议总是错误的。我正在搜索
BoardSupportPackageSamsung
中的
BoardSupportPackage
。通常情况下,Contains应该可以工作,但我尝试更改它时遇到了错误:bool has=lstExcludeLibs.Any(cus=>strearch.ToUpper().Contains(cus))
ToUpper
ToLower
是常见的技巧,但如果你想支持除英语以外的任何语言,这是个坏主意。请参阅此问题,以获得比
ToUpper
:挑剔更好的解决方案。示例代码在土耳其语言环境下失败。Config的大写字母是CONFİG,因此不匹配。使用
ToUpperInvariant()
是一个更好的选择。在我的例子中,我总是不相信你的建议。我正在搜索
BoardSupportPackageSamsung
中的
BoardSupportPackage
。通常情况下,Contains应该可以工作,但我尝试更改它时遇到了错误:bool has=lstExcludeLibs.Any(cus=>strearch.ToUpper().Contains(cus))
ToUpper
ToLower
是常见的技巧,但如果你想支持除英语以外的任何语言,这是个坏主意。请参阅此问题,以获得比
ToUpper
:挑剔更好的解决方案。示例代码在土耳其语言环境下失败。Config的大写字母是CONFİG,因此不匹配。使用
ToUpperInvariant()
是更好的选择。