Невозможно преобразовать один общий список в другой - PullRequest
0 голосов
/ 28 октября 2011

У меня есть следующий список:

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

Ответы [ 3 ]

4 голосов
/ 28 октября 2011

Поскольку в сообщении об ошибке ясно указано, GroupBy возвращает список IGrouping с, который не совпадает со списком ViewOffer с.

Вы можете получить один элемент из каждой группы, добавив .Select(g => g.Last())

1 голос
/ 28 октября 2011

Поскольку вы используете метод расширения GroupBy, вы получаете список сгруппированных элементов, в которых каждая группа содержит множество элементов с одинаковым OfferId. Поэтому в результате вашей операции у вас есть 'System.Collections.Generic.List<System.Linq.IGrouping<long,myDAL.viewOffers>>'. Посмотрите документацию IGouping .

1 голос
/ 28 октября 2011

Вы не можете поместить «результат группировки 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();
...