2

私はこのようなクラスを持っています:

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 の呼び出しに問題があります。コンパイラのエラー メッセージはあまり役に立ちません。
コレクションからサブセットを抽出する方法についての提案をいただければ幸いです...

4

1 に答える 1

3

Where代わりに、次のように「述語に基づいて値のシーケンスをフィルタリングする」を使用します。

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

ではなくSelectMany、「シーケンスの各要素をIEnumerableに投影し、結果のシーケンスを1つのシーケンスにフラット化します。」

于 2013-03-12T15:57:32.600 に答える