2014-01-27 71 views
0

我想檢查是否存在添加之前,但鑄造.Any不起作用。Linq投的對象

人們是ObservableCollection的對象,因爲每個可以是不同的類(每個都有FirstLastName屬性)。

ObservableCollection<object> People = new ObservableCollection<object>(); 

foreach (cEmployee t in Group1) 
{ 
    if (!People.Any((cEmployee)x => x.FirstLastName == t.FirstLastName) 
     People.Add(new cEmployee(t));    
} 

是否有解決方法?

+0

x.FirstLastName.Trim()。ToLower()== t.FirstLastName.Trim()。ToLower(),可能會給一個嘗試 –

+0

爲什麼不使用'ObservableCollection '? – Johnny5

回答

5

如果他們都保證有一個FirstName屬性的一個選擇是使用dynamic

if (!People.Any((dynamic x) => x.FirstName == t.FirstName)) { 
    ... 
} 

這不是類型安全的,但如果所有的值確實有該屬性將發揮作用。如果在另一方面,他們都實現與FirstName財產共同的基本類型或接口,那麼你可以使用

if (!People.OfType<TheType>().Any(x => x.FirstName == t.FirstName)) { 
    ... 
} 
+0

非常感謝!我從來沒有遇到過動態。就是這個! – Daniel

1

您確實需要調用People.Add(new cEmployee(t)),而不是People.Add((cEmployee)t)甚至只是People.Add(t)

+0

感謝Martin,你說得對People.Add(t) – Daniel