2016-04-12 14 views
0

私はパラメータとしてObservableCollectionをとる方法を持っています。ラムダ式の選択項目から現在の項目を取得していますか?

private void DownloadSources(ObservableCollection<DownloadSourcesHelper> SourcesDownloadCollection) 
{ 
    downloadsList = 
     SourcesDownloadCollection.Select(GetDownloadCommandParameters) 
      .Select(sourceParamters => 
       new DownloadCalculation(DownloadSources.Item currently being iterated here!, 
        ))).ToList(); 

    foreach (var source in downloadsList) 
    { 
     blah blah. 

    // ..... 

現在DownloadSourcesアイテムを取得するために私のための方法はあります:私はそうのような別のリストを移入するためにラムダ式を使用していますか?

+0

*現在のアイテムを定義してください? ObservableCollectionは現在のアイテムと全く同じものを持っていません。 – Sinatr

+0

SourcesDownloadCollectionの項目を現在選択されている列挙するには、その内容をDownloadCalculationオブジェクトに渡す必要があります。 – Hardgraf

+0

'DownloadCalculation'の結果と現在の' sourceParamters'値を含む 'Select'で匿名型を作成できます。 – Sinatr

答えて

0

MVVMをやっていると思いますが、このコードはViewModelにありますか?

もしあなたのViewModelのプロパティにDownloadSources.SelectedItemをバインドすれば、それをあなたのlinqクエリで使うことができます。

+0

はい、私は、ViewModelでSelectedItemプロパティを持っています。問題は、選択された単一のDownloadSourceだけでなく、リストを使用して複数のアイテムが繰り返し処理されることです – Hardgraf

1

質問のいずれか

var list =...Select(o => new DownloadCalculation(o.Item)).ToList(); // current item is o 

のと同じくらい簡単ですまたは選択

var list = ....Select(o => new { Item = o, Result = new DownloadCalculation(o).ToList() }); 
foreach (var source in list) 
{ 
    // use source.Item and source.Result 
} 

に匿名型を作成することができますおそらくこれは、(別のSelectから値を渡す)問題である:

var list = ....Select(o => new {Current = o, Result = GetDownloadCommandParameters }.Select(o => new DownloadCalculation(Current, Result)).ToList() 
関連する問題