C# Linq投射对象
我正在尝试在添加之前检查是否存在,但在C# Linq投射对象,c#,linq,C#,Linq,我正在尝试在添加之前检查是否存在,但在中强制转换。任何都不起作用 人是对象的可观察集合,因为每个对象都可以是不同的类(每个对象都有FirstLastName属性) observedcollection People=newobservedcollection(); foreach(第1组中的员工) { 如果(!People.Any((cEmployee)x=>x.FirstLastName==t.FirstLastName) 新增(新员工(t)); } 有解决办法吗?如果他们都保证有名字属性,
中强制转换。任何都不起作用
人是对象的可观察集合,因为每个对象都可以是不同的类(每个对象都有FirstLastName
属性)
observedcollection People=newobservedcollection();
foreach(第1组中的员工)
{
如果(!People.Any((cEmployee)x=>x.FirstLastName==t.FirstLastName)
新增(新员工(t));
}
有解决办法吗?如果他们都保证有名字
属性,一个选项是使用动态
if (!People.Any((dynamic x) => x.FirstName == t.FirstName)) {
...
}
这不是类型安全的,但如果所有值都确实具有该属性,则会起作用。另一方面,如果它们都使用FirstName
属性实现公共基类型或接口,则可以使用该属性
if (!People.OfType<TheType>().Any(x => x.FirstName == t.FirstName)) {
...
}
if(!People.OfType().Any(x=>x.FirstName==t.FirstName)){
...
}
如果保证它们都有名字
属性,一个选项是使用动态
if (!People.Any((dynamic x) => x.FirstName == t.FirstName)) {
...
}
这不是类型安全的,但如果所有值都确实具有该属性,则会起作用。另一方面,如果它们都使用FirstName
属性实现公共基类型或接口,则可以使用该属性
if (!People.OfType<TheType>().Any(x => x.FirstName == t.FirstName)) {
...
}
if(!People.OfType().Any(x=>x.FirstName==t.FirstName)){
...
}
你确定你需要呼叫人员。添加(新员工(t))
,而不是人员。添加((员工)t)
甚至只是人员。添加(t)
?你确定你需要呼叫人员。添加(新员工(t))
,而不是人员。添加((员工)t)
,甚至只是人员。添加(t)
?x.FirstLastName.Trim().ToLower()==t.FirstLastName.Trim().ToLower(),可能会给出一个不使用可观察集合的尝试--x.FirstLastName.Trim().ToLower()==t.FirstLastName.Trim().ToLower(),可能会尝试一下为什么不使用可观察的集合
?非常感谢!我从未见过dynamic。就是这样!非常感谢!我从未见过dynamic。就是这样!