多嵌套的FirstOrDefault

时间:2015-08-19 17:00:26

标签: c# linq

我有以下型号:

public class Stredisko
{
    public string Name { get; set; }
    public ObservableCollection<SubStredisko> Pracoviska { get; set; }
    public ObservableCollection<SubStredisko> Dohodari { get; set; }
}
public class SubStredisko
{
    public string Name { get; set; }
    public string Code { get; set; }

    public VyplatnePasky VyplatnaPaska { get; set; }
    public MzdoveNaklady MzdoveNaklady { get; set; }
    public Poistne Poistne { get; set; }
}

我现在正在尝试运行一个超级简单的LINQ查询,该查询应返回符合以下条件的第一个元素:

var sStredisko = Strediska.FirstOrDefault(
                    n => n.Pracoviska.FirstOrDefault(x=>x.Name == "somename"));

我对ObservableCollection<Stredisko> Strediska

运行此条件

但是由于未知原因(对我而言)它给了我以下错误: 无法隐式转换类型&#39; SubStredisko&#39;到&#39; bool&#39;

我做错了什么?

1 个答案:

答案 0 :(得分:9)

您正在寻找Enumerable.Any

var sStredisko = Strediska.FirstOrDefault(
                              n => n.Pracoviska.Any(x => x.Name == "somename"));

FirstOrDefault将产生与谓词匹配的第一个元素。您希望与第一个元素进行匹配,并产生一个bool,表示已找到匹配项,这是Any所做的。