我有以下列表:
List<view_zoodoffers> list = sqlEntities.viewOffers
.Where(o => o.ProductId == productId)
.GroupBy(o => o.OfferId)
.ToList();
OfferId
是long
:当我尝试转换列表时出现以下错误:
Error 27 Cannot implicitly convert type System.Collections.Generic.List<System.Linq.IGrouping<long,myDAL.viewOffers>> to System.Collections.Generic.List<myDAL.viewOffers>
:
我做错了什么?
我想要这样的功能:
SELECT * FROM ViewOffers group by offerid
答案 0 :(得分:4)
正如错误消息明确所述,GroupBy
正在返回IGrouping
的列表,这与ViewOffer
的列表不同
您可以通过添加.Select(g => g.Last())
答案 1 :(得分:1)
您不能将“x的分组结果”放入“x列表”中!
使用
List<IGrouping<long,myDAL.viewOffers>> list =
或只是
var list = ...
这就是你所需要的:
sqlEntities.viewOffers
.Where(o => o.ProductId == productId)
.GroupBy(o => o.OfferId)
.Select(o => o.Key);
或
sqlEntities.viewOffers
.Where(o => o.ProductId == productId)
.Select(o => o.OfferId)
.Distinct();
答案 2 :(得分:1)
当您使用GroupBy扩展方法时,您将获得分组项目列表,其中每个组都可以枚举具有相同OfferId的元素。这就是您的操作导致'System.Collections.Generic.List<System.Linq.IGrouping<long,myDAL.viewOffers>>'
的原因。查看IGouping文档。