2011-07-12 3 views
0

私は除外が必要な単語のリストを含むリストを持っています。C#のLISTとLINQの検索のように

私のアプローチは、これらの単語を含むリストを持ち、Linqを使って検索することです。

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

文字列strSearchの一部がlstExcludedLibsに存在することがわかります。

.anyは完全一致のみを検索します。同じような検索やワイルドカード検索を使用する可能性はありますか

これはlinqで可能ですか?

foreachとcontainsを使用してこれを実現できましたが、LINQを使用して簡単にしたいと思っていました。

編集:私はList.Containsを試してみましたが、また、私はラインがあるべきだと思う

+0

だけ観察しかし、私見、あなたの変数名の接頭辞 'LST' と 'STR' は省略されなければなりません。これはハンガリー記法の誤解であり、冗長です。 –

+0

もちろん避けます。 :) – KK99

+0

私の答えにコメントを追加しました –

答えて

3

あなたは間違った方法ラウンドそれを持って、それが必要: -

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

はところで - これは単なる観察しかし、私見では、あなたの変数名の接頭辞「LST」と「STR」は省略されるべきです。これはハンガリー記法の誤解であり、冗長です。

+0

アダムに感謝します。あなたのソリューションはうまくいった! – KK99

+0

あなたはKarthikを歓迎します。 –

1

を動作していないよう:

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

私の例では、私はいつもあなたの提案で偽を取得します。私は 'BoardSupportPackageSamsung'で' BoardSupportPackage'を検索しています。一般的にContainsはうまくいくはずですが、私は偽になります – KK99

+0

これを変更してみてください:bool has = lstExcludeLibs.Any(cus => strSearch.ToUpper()。Contains(cus)); – ysrb

+0

'ToUpper'と' ToLower'は一般的なトリックですが、英語以外の言語をサポートしたいのであれば悪い考えです。 'ToUpper'よりも優れた解決方法については、この質問を参照してください:http://stackoverflow.com/questions/444798/case-insensitive-containsstring –

1

この情報はお役に立ちましたか?

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

OR

bool has = lstExcludeLibs.Where(cus => strSearch.ToUpper().IndexOf(cus) > -1).Count() > 0; 

OR

bool has = lstExcludeLibs.Count(cus => strSearch.ToUpper().IndexOf(cus) > -1) > 0;