如何在第一个选择的属性上使用新的选择?

时间:2012-08-23 12:12:34

标签: c# asp.net linq

我的代码是:

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

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

2 个答案:

答案 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绑定的第一个网站。

答案 1 :(得分:1)

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

那应该解决它。