2017-11-06 7 views
-4

常にが含まれていますメソッドがLINQクエリにSQL IN機能を追加しました。文字列がLINQで機能しない

今回は非常に奇妙なことが起こりました。

私はこのような文字列の配列を持っている

string[] FilenamesToParse = {"JOHN_X200-", "DOE_X300-", "FOO_X300_M-"}; 

その後、私はちょうど下記のように、この配列を使用しました:クエリの上

var result = (from dps in appProcessList 
        where FilenamesToParse.Contains(dps.FileName) 
        select dps.Devices).ToList() 

は0結果となったが、私はよファイル名にFilenamesToParse配列で定義された単語が含まれていることを確認してください。

だから私はスニペットを試してみたが含まれています。

foreach (var applicationProcess in appProcessList) 
{ 
    if (applicationProcess.FileName.Contains(FilenamesToParse[0])) 
    { 

    } 
} 

ここで私は間違っていますか? ありがとうございます。

+3

*私はそれがないと確信していますが、どのようになります

次はあなたのループに似てLINQ-のアプローチになります。私たちは配列に何が入っているか知らずにテストしますか? –

+0

dps.FileNameの値は何ですか?どのデータがチェックされているかを知るのに役立ちます... – Kixoka

+3

2番目のチェックは最初のものから逆になります。 –

答えて

5

あなたの2つのappraochesは似ていません。あなたは、LINQ you'reあなたFilenamesToParse -arrayを反復し、その要素のいずれかが正確に二番目にあなたがappProcessListを反復し、そのFileName -property が最初FilenamesToParseが含まれているかどうかを確認することによりdps.FileNameを、一致するかどうかを確認中。私は、ファイル名があることを確信している* FilenamesToParse配列で定義された単語が含まれてい

var result = (from dps in appProcessList 
       where FilenamesToParse.Any(x => dps.FileName.Contains(x)) 
       select dps.Devices).ToList() 
+0

このアプローチに感謝します!私は、LINQでのContainsの定義を簡単に見てからそれを理解しました。私はクエリ後に余分なforeachを追加することでそれを達成しましたが、これははるかに明確なアプローチです。 –

関連する問題