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'.

有什么办法解决这个问题吗?

4

2 回答 2

2

您正在寻找

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

site.Bindings.First(binding => binding.Host == host)返回 a Binding,但它在 内部serverManager.Sites.First(...),这反过来又需要一个谓词(返回 a bool),而不是 a Binding

上面的代码片段Any用于获取第一个与Host == host.

于 2012-08-23T12:17:30.210 回答
1
var instance = serverManager.Sites.SelectMany(b =>b.Bindings).First(
                binding => binding.Host == host);

那应该解决它。

于 2012-08-23T12:14:20.097 回答