2015-08-19 71 views
1

我有以下型號:多套FirstOrDefault

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

但是,對於未知的原因(對我來說)它給了我以下錯誤: 不能將類型'SubStredisko'隱式轉換爲'bool'

我在做什麼錯?

+0

錯誤消息告訴你到底你在做什麼錯 – Servy

+0

我只是不明白爲什麼有一個轉換爲布爾,當我試圖簡單地檢索一個元素 –

+1

如果你想要看看方法的文檔查看其參數的類型並找到關於它接受它們的原因的信息,以及如何提供它們的示例。當然,你已經提供了一個函數來計算內部'FirstOrDefault'調用的布爾值,所以你可能已經明白它接受一個提供條件的函數a.k.a.布爾值。 – Servy

回答

9

您正在尋找Enumerable.Any

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

FirstOrDefault將產生謂詞匹配的第一個元素。你想匹配第一個元素,併產生一個bool表明匹配已被找到,這就是Any所做的。

+0

哦,我傻!我知道這很簡單!謝謝。 –