Linq施放物体

时间:2014-01-27 20:09:10

标签: c# linq

我想在添加之前检查一个是否存在,但.Any内的投射不起作用。

人是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));              
}

有解决方法吗?

2 个答案:

答案 0 :(得分:5)

如果他们都保证拥有FirstName属性,则可以使用dynamic

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

这不是类型安全的,但如果所有值确实具有该属性,则它将起作用。另一方面,如果他们都使用FirstName属性实现公共基本类型或接口,那么您可以使用

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

答案 1 :(得分:1)

您确定需要致电People.Add(new cEmployee(t)),而不是People.Add((cEmployee)t)甚至只是People.Add(t)吗?