不能将一个泛型列表转换为另一个泛型列表
本文关键字:列表 泛型 转换 另一个 一个 不能 | 更新日期: 2023-09-27 18:12:35
我有以下列表:
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
正如错误消息清楚地所述,GroupBy
返回的是IGrouping
s列表,这与ViewOffer
s列表不同。
您可以通过添加.Select(g => g.Last())
当您使用GroupBy扩展方法时,您将获得分组项目列表,其中每个组都可枚举具有相同OfferId的元素。这就是为什么你有'System.Collections.Generic.List<System.Linq.IGrouping<long,myDAL.viewOffers>>'
作为你的操作的结果。查看IGouping文档
你不能把"result of grouping of x"放入"list of 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();