Немагчыма пераўтварыць адзін агульны спіс да іншага

У мяне ёсць наступны спіс:

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 групы ViewOffers па offerid
дададзена аўтар abatishchev, крыніца
Сам: Што СКБД вы карыстаецеся?
дададзена аўтар abatishchev, крыніца
Ды Імя класа ViewOffer, ViewOffer выгляду я атрымліваю запісы, і цяпер я хачу, каб атрымаць запісы групы па offerId. яна выдатна працуе, калі я група з дапамогай запыту.
дададзена аўтар Sami, крыніца
я хачу гэтую функцыю «SELECT * FROM групы ViewOffers па offerid»
дададзена аўтар Sami, крыніца
да я бы запусціць гэты запыт ўручную, і гэта паказвае мне запіс без якіх-небудзь памылак.
дададзена аўтар Sami, крыніца
Я выкарыстоўваю MySQL Workbench.
дададзена аўтар Sami, крыніца
Гэта дрэннае імя класа; ён павінен называцца ViewOffer .
дададзена аўтар SLaks, крыніца
«Згрупаваць па» SQL-трымае толькі адзін элемент у кожнай групе. LINQ GroupBy захоўвае ўсе элементы, толькі згрупаваных у адпаведнасці з (вынік) лямбда-выразы.
дададзена аўтар Hans Kesting, крыніца

3 адказы

У паведамленні пра памылку ясна стану, GroupBy вяртае спіс IGrouping s, які не з'яўляецца такой жа, як спіс ViewOffer s.

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

4
дададзена

Вы не можаце паставіць «вынік групавання х» у «спіс х»!

выкарыстанне

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
дададзена