2013-07-05 77 views
0

嗨我有一個對象列表,如果條件匹配其他對象,我想返回更新的對象。下面是我試過的代碼 。這是行不通的。 它只是返回與更新找到的匹配。 我想要這些值也不匹配從列表中的鍵值沒有更新。 我們可以這樣做嗎?從對象列表中返回更新的對象值

var bindingData = dataSource.Where(x => filesFoundDictionary.Any(y => y.Key == x.FileName)).Select(x => { x.Select = true; return x; }).ToList(); 

回答

2

你不應該使用WhereSelect語句來代替之內把你的條件:

var bindingData = dataSource 
    .Select(x => 
    { 
     if(filesFoundDictionary.ContainsKey(s.FileName)) 
      x.Select = true; 
     return x; 
    }).ToList(); 
+0

對我來說這一個工作sir.Thanks很多。 :) –

+2

您可以用'filesFoundDictionary.ContainsKey(s.FileName)'替換'filesFoundDictionary.Any(y => y.Key == x.FileName)',因爲這樣更有效率。第一個是O(n),而字典方法總是O(1)。 –

+0

@TimSchmelter你是完全正確的!更新了我的答案。謝謝! – MarcinJuraszek