Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Linq SelectMany,返回整个对象_Linq_Silverlight 5.0_Generic Collections - Fatal编程技术网

C Linq SelectMany,返回整个对象

C Linq SelectMany,返回整个对象,linq,silverlight-5.0,generic-collections,Linq,Silverlight 5.0,Generic Collections,我有一门课是这样的: public class FileCollection:ObservableCollection<IUserFile>. List<IUserFile> selectedFiles = new List<IUserFile>; foreach(string s in names) { var matchingFiles = this.SelectMany(userFile => userFile.Name.Eq

我有一门课是这样的:

public class FileCollection:ObservableCollection<IUserFile>.  
List<IUserFile> selectedFiles = new List<IUserFile>;
foreach(string s in names)  
{  
    var matchingFiles = this.SelectMany(userFile => userFile.Name.Equals(s));  
    foreach(IUserFile uf in matchingFiles)  
    {  
        selectedFiles.Add(uf);    
    }  
 }  
在类中,我希望根据名称列表获取集合的子集

我想应该是这样的:

public class FileCollection:ObservableCollection<IUserFile>.  
List<IUserFile> selectedFiles = new List<IUserFile>;
foreach(string s in names)  
{  
    var matchingFiles = this.SelectMany(userFile => userFile.Name.Equals(s));  
    foreach(IUserFile uf in matchingFiles)  
    {  
        selectedFiles.Add(uf);    
    }  
 }  
此时,我在Select或SelectMany调用中遇到了问题;编译器错误消息没有那么大帮助。 任何关于如何从集合中提取子集的建议都将不胜感激

使用基于谓词过滤值序列的替代方法,以便:

var matches = this.Where(userFile => userFile.Name.Equals(s)); 

而不是,它将序列的每个元素投影到IEnumerable,并将生成的序列展平为一个序列。

虽然我知道SelectMany可能会选择许多源,但实际上您想要的是在哪里。SelectMany是指当您要为源中的每个项目选择许多其他内容时(例如,从父项列表中),您可以选择many以生成子项列表。感谢您的回复。我刚发现这个。我要找的到底是哪里。