C# 将iGroup转换为IQueryable

C# 将iGroup转换为IQueryable,c#,linq,C#,Linq,我有一个名为CelebrityLocation的模型,其中包括一个名人模型 所以, 我想获得所有CellerityLocation对象的列表,但在CellerityLocation中按名人进行分组 我得到了一个iGroup的返回类型,但我需要将其转换为IQueryable 以下是我到目前为止一直在尝试的 IQueryable<CelebrityLocation> returnSet = (IQueryable<CelebrityLocation>) dc.Celebrit

我有一个名为CelebrityLocation的模型,其中包括一个名人模型

所以,

我想获得所有
CellerityLocation
对象的列表,但在
CellerityLocation
中按
名人进行分组

我得到了一个iGroup的返回类型,但我需要将其转换为
IQueryable

以下是我到目前为止一直在尝试的

IQueryable<CelebrityLocation> returnSet = (IQueryable<CelebrityLocation>) dc.CelebrityLocations.OrderByDescending(x => x.DateTime).GroupBy(x => x.Celebrity);
iqeryable returnSet=(iqeryable)dc.CelebrityLocations.OrderByDescending(x=>x.DateTime).GroupBy(x=>x.名人);
编辑


在这种情况下,AutoMapper是一个可行的解决方案吗?

您可以直接调用
AsQueryable()
如果分组的元素彼此相邻,是否只需要将其展开

如果是这样,这将有助于:

IQueryable<CelebrityLocation> returnSet = dc.CelebrityLocations.OrderByDescending(x => x.DateTime).GroupBy(x => x.Celebrity).SelectMany(x => x);
IQueryable returnSet=dc.cerbilityLocations.OrderByDescending(x=>x.DateTime)。GroupBy(x=>x.名人)。选择many(x=>x);
将查询更改为:

dc.CelebrityLocations.OrderByDescending(x => x.DateTime).AsQueryable().GroupBy(x => x.Celebrity).Select(x => x.First());

为什么您想要一个
IQueryable
?它已经在内存中。@SLaks,因为这是我正在更改的现有方法,并且有许多依赖于此剩余的iQueryTable。您可能应该将它们全部更改为
IEnumerable
,除非它有时会对实际的查询表进行操作。我尝试这样做时得到了这一点;无法将“System.Data.Linq.DataQuery
1[System.Linq.IGrouping
2[DataRepository.名人,DataRepository.celeritylocation]]类型的对象强制转换为“System.Linq.IQueryable`1[DataRepository.celeritylocation]+1,因为这几乎就到了,但Fulvio的回答让我到了那里。谢谢anyway@griegs所以你只需要每组的第一个元素?@griegs好吧,我不是从你原来的帖子里得到的。
dc.CelebrityLocations.OrderByDescending(x => x.DateTime).AsQueryable().GroupBy(x => x.Celebrity).Select(x => x.First());