2012-08-23 112 views
1

我的代碼是:如何在第一個選擇的屬性上使用新的選擇?

var serverManager = new ServerManager(); 
var regex = new Regex("^(http|https)://"); 
var host = regex.Replace(url, ""); 
var instance = serverManager.Sites.First(
    site => site.Bindings.First(
     binding => binding.Host == host 
    ) 
); 

你可以看到我嘗試做在第一個的屬性的第二選擇,因爲Bindings是一家集,我需要這個集合的特定項目。我得到這個錯誤:

Cannot implicitly convert type 'Microsoft.Web.Administration.Binding' to 'Bool'. 

任何想法解決?

+0

如果您有更好的主意,可以編輯問題的標題。 :s –

+0

不,你正在嘗試應用第二個謂詞* - 你沒有執行任何「選擇」。你真的想在這裏實現什麼? –

回答

2

您正在尋找

var instance = serverManager.Sites.First(
    site => site.Bindings.Any(
     binding => binding.Host == host 
    ) 
); 

site.Bindings.First(binding => binding.Host == host)返回Binding,但它的serverManager.Sites.First(...),而這又需要一個謂詞(返回bool),而不是一個Binding內。

上面的代碼段使用Any來獲取第一個與Host == host有約束力的網站。

+0

謝謝,我試着回來告訴你它是否有效。 –

+0

恭喜你的10K。 :) –

1
var instance = serverManager.Sites.SelectMany(b =>b.Bindings).First(
       binding => binding.Host == host); 

這應該解決它。

相關問題