2017-11-06 6 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

* 나는 그렇지 확신하지만 어떻게 것 우리는 배열에 무엇이 있는지 모른 채 시험을합니까? –

+0

dps.FileName의 값은 무엇입니까? 어떤 데이터가 검사되고 있는지 알면 도움이 될 것입니다 ... – Kixoka

+3

두 번째 검사는 첫 번째 검사와 다른 방법입니다 ... –

답변

5

두 개의 appraoches는 유사하지 않습니다. 당신은 LINQ 멋져요 당신 FilenamesToParse -array을 반복하고 그 요소 의 정확히 두 번째 당신이 appProcessList을 반복하고 FileName -property 처음 FilenamesToParse이 포함되어 있는지 확인함으로써dps.FileName과 일치하는지 확인합니다.

당신의 루프 유사한 LINQ-접근 방식이 될 것입니다 다음.

나는 파일 이름 FilenamesToParse 배열에 정의 된 단어가 포함되어 있다는 것을 확신 *
var result = (from dps in appProcessList 
       where FilenamesToParse.Any(x => dps.FileName.Contains(x)) 
       select dps.Devices).ToList() 
+0

그 접근에 감사드립니다! 나는 LINQ에 Contains의 정의를 간략하게 살펴본 후 그것을 깨달았다. 쿼리 후 여분의 foreach를 추가하여이 작업을 수행했지만 훨씬 더 명확한 접근 방법입니다. –