我有两个数组,我想在其中查找array0中的所有元素,其中array1的完整字符串包含在array0的字符串中。以下是场景:
我有一个字符串数组,它包含某个目录中所有XML文件的完整路径。然后我得到一个位置列表,只想返回XML文件路径的子集,其中XML文件的文件名是loc id。
因此,我的阵列0有如下内容:
c:\some\directory\6011044.xml
c:\some\directory\6028393.xml
c:\some\directory\6039938.xml
c:\some\directory\6028833.xml
我的阵列1有:
6011044
6028833
…我只想得到array0的结果,其中filepath字符串包含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
见下面马克的评论。我的问题的答案是我。我的locs集合中有一条记录的cds值为零,因此与xml集合中的所有记录匹配。如果我能找到一种没有我自己的编码方式,那么我将是一个完美的开发人员!