演员已经杀了我 - ?
Error 4 Cannot implicitly convert type
'System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<CCE_2009.Data.Person>>'
to
'System.Collections.Generic.IEnumerable<CCE_2009.Data.Person>'
从生成:演员已经杀了我 - ?
var RecoveryManagerQuery =
from RM in
(
from REP in e.Results
select REP.Organization.Representatives.Select(RM=>RM.Person)
)
select RM;
RecoveryManagers = new ObservableCollection<Person>(RecoveryManagerQuery.ToList());
这是为什么IEnumberable包埋 - 组织有一个或多个,其中每个代表是关系到一个只有一个人的代表。
我想符合该条件的人员名单.....
argghh ..
[R
外部查询是多余的。我们可以通过删除它说明清楚:
var RecoveryManagerQuery =
from REP in e.Results
select REP.Organization.Representatives.Select(RM=>RM.Person);
正如你所看到的,select
条款说,对于每一个REP
,选择所有与REP
的组织代表有关的人。这意味着RecoveryManagerQuery
中的每个元素都将是集合的Person
对象,而不是个别的对象。要扁平化查询,以便返回一组Person
对象,而不是一集一集Person
对象中的:
var RecoveryManagerQuery =
from REP in e.Results
from orgRep in REP.Organization.Representatives
select orgRep.Person;
编辑:这里是点符号:
e.Results.SelectMany(
REP => REP.Organization.Representatives,
(REP, orgRep) => orgRep.Person);
我看你的例子他们只有一个选择,因此,只有一个集合。你怎么用点符号来写这个? var RecoveryManagerQuery = e.Results.Select(P => P.Organization.Representatives.Select(RM => RM.Person));但这也有两个选择,并产生相同的错误..只是好奇在这个时间点! – codeputer 2010-09-15 19:58:12
我以这种方式工作 - 看起来比我想象的要复杂得多: e.Results.Select(P => P.Organization.Representatives).SelectMany(Reps => Reps.ToArray())。选择(代表=> Rep.Person); – codeputer 2010-09-15 20:02:25
@codputer:我在我的答案中加了点符号。 – 2010-09-16 02:14:39
什么你想达到什么目的?由于嵌套的LINQ查询,您正在获取IEnumerable的IEnumerable。
取决于你想达到什么样的,你可以改变你的查询:
var RecoveryManagerQuery =
from REP in e.Results
select REP.Organization.Representatives.Select(RM=>RM.Person);
我测试了这个,它仍然返回一个IEnumberable中的IEnumerable ...我认为现在对我来说是有意义的,因为它们是两个选择因此这两个集合...查看答案以避免双重选择 – codeputer 2010-09-15 19:57:15
冷静下来,深呼吸。然后你粘贴整个错误信息,并给出一些关于e代表的内容,这是LINQ2Objects还是LINQ2SQL? – 2010-09-15 19:00:51