我想在添加之前检查一个是否存在,但.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));
}
有解决方法吗?
答案 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)
吗?