Array1의 전체 문자열이 Array0의 문자열에 들어있는 Array0의 모든 요소를 찾고자하는 두 개의 배열이 있습니다. 다음은 시나리오입니다.문자열 비교를 기반으로 한 배열 교차점
특정 디렉토리에있는 모든 XML 파일의 전체 경로가 포함 된 문자열 배열이 있습니다. 그런 다음 위치 목록을 가져오고 xml 파일의 파일 이름이 loc id 인 XML 파일 경로의 하위 집합 만 반환하려고합니다.
그래서, 내 Array0 같은 것을 가지고
c:\some\directory\6011044.xml
c:\some\directory\6028393.xml
c:\some\directory\6039938.xml
c:\some\directory\6028833.xml
을 그리고 내 배열 1이 있습니다
6011044
6028833
을 ... 그리고 난 단지 파일 경로 문자열이 문자열을 포함하는 경우 Array0의 결과를 갖고 싶어 Array1에서. 여기
는 ... 내가 뭘 찾았는지filesToLoad = (from f in Directory.GetFiles(Server.MapPath("App_Data"), "*.xml")
where f.Contains(from l in locs select l.CdsCode.ToString())
select f).ToArray();
입니다 ...하지만 난이에서 이해할 수있는 다음과 같은 컴파일러 오류 ...
Argument '1': cannot convert from 'System.Collections.Generic.IEnumerable<string>' to 'string'
을 ... 수 영어 관점이지만 해결 방법을 모른다.
내가 잘못된 각도에서오고 있습니까?
한 조각이 누락 되었습니까?
편집 여기
나는 그것을 변경했습니다 무엇 :
filesToLoad = (Directory.GetFiles(Server.MapPath("App_Data"), "*.xml"))
.Where(path => locs.Any(l => path.Contains(l.CdsCode.ToString()))
).ToArray();
...하지만 이것은 여전히 그들 중 하나가 아닌 경우에도 내 모든 .xml 파일을 가져옵니다 내 locs 엔터티 컬렉션. 내가 뭘 잘못 넣었 니?
분명히 나는 각 부분이 무엇을하고 있는지에 대한 약간의 설명이 도움이 될 것 같아서 주요 개념을 놓치고있다.
편집 2 아래의 Mark의 설명을 참조하십시오. 내 문제에 대한 대답은 나였다. 내 locs 컬렉션에 CDS 값이 0 인 레코드 하나가 있었으며 따라서 내 xml 컬렉션의 모든 레코드와 일치했습니다. 만약 내가 혼자서 코드를 작성할 수있는 방법을 찾을 수 있다면, 나는 완벽한 개발자가 될 것이다! 당신은 Any
을 놓치고
에 가입 할 수 있습니다,하지만 난 그냥 나를 위해 일을 얻을 수 없습니다. 좀 더 도와주세요;) –
가장 좋은 추측 : 귀하의 l.CdsCode.ToString() 중 하나가 빈 문자열입니다. 이것은 모든 파일과 일치합니다. –
GENIUS! 내 locs 컬렉션에 0이라는 기록이 있습니다. 그리고 내 CDS 코드에는 모두 0이 들어 있으므로 다시 돌아 왔습니다. 그레이트 추측! –