Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq投射对象_C#_Linq - Fatal编程技术网

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。就是这样!