Неможливо перетворити один загальний список на інший

У мене є наступний список:

List list = sqlEntities.viewOffers
    .Where(o => o.ProductId == productId)
    .GroupBy(o => o.OfferId)
    .ToList();

OfferId is long: I get the following error when I try to convert the list:

Error 27 Cannot implicitly convert type System.Collections.Generic.List> to System.Collections.Generic.List:

Що я роблю неправильно?

Я хочу таку функціональність:

SELECT * FROM ViewOffers group by offerid
0
Що ти хочеш досягти?
додано Автор abatishchev, джерело
Самі: Ви спробували запустити цей запит на сервер SQL вручну? Ви отримаєте помилку. Однак ви можете запустити команду SELECT offerid FROM FROM ViewOffers за пропозицією
додано Автор abatishchev, джерело
Самі: Яку СУБД ви використовуєте?
додано Автор abatishchev, джерело
Так, ім'я класу - ViewOffer, ViewOffer - це вид, я отримую записи, і тепер я хочу отримати групу записів за offerId. це добре працює, коли я групую за допомогою запиту.
додано Автор Sami, джерело
Я хочу цю функцію "SELECT * FROM FROM ViewOffers group by offerid"
додано Автор Sami, джерело
так, я запустив цей запит вручну, і це показує мені записи без будь-якої помилки.
додано Автор Sami, джерело
Я використовую MySql Workbench.
додано Автор Sami, джерело
Це погане ім'я класу; його слід називати ViewOffer .
додано Автор SLaks, джерело
група SQL за "зберігає лише один елемент для групи. LINQ GroupBy зберігає всі елементи, згруповані лише відповідно до (результат) лямбда-вираження.
додано Автор Hans Kesting, джерело

3 Відповіді

У повідомленні про помилку ясно стану, GroupBy повертає список IGrouping s, який не є такою ж, як список ViewOffer .

You can get a single element from each group by adding .Select(g => g.Last())

4
додано

Ви не можете поставити "результат групування x" у "список x"!

Використовуйте

List> 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();
1
додано

As you're using GroupBy extension method you're getting list of grouped items where each group is enumerable of elements with same OfferId.That's why you have 'System.Collections.Generic.List>' as a result of your operation. Look into IGouping documentation.

1
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug