Bir genel liste diğerine dönüştürülemiyor

Aşağıdaki listem var:

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:

Neyi yanlış yapıyorum?

Böyle bir işlevsellik istiyorum:

SELECT * FROM ViewOffers group by offerid
0
Ne elde etmek istiyorsun?
katma yazar abatishchev, kaynak
Sami: Bu sorguyu SQL sunucusuna karşı elle çalıştırmayı denedin mi? Bir hata alırsınız. Ancak SELECT offerid FROM ViewOffers grubundan offerid komutunu çalıştırabilirsiniz
katma yazar abatishchev, kaynak
Sami: Hangi DBMS'yi kullanıyorsunuz?
katma yazar abatishchev, kaynak
Evet, sınıf adı ViewOffer, ViewOffer kayıtları alıyorum ve şimdi offerId'ye göre kayıt grubu almak istiyorum. Sorgu kullanarak gruplandırdığımda iyi çalışıyor.
katma yazar Sami, kaynak
Bu işlevselliği "SELECT * FROM ViewOffers grup tarafından offerid" istiyorum
katma yazar Sami, kaynak
evet bu sorguyu elle çalıştırdım ve bu bana kayıtları hatasız olarak gösteriyor.
katma yazar Sami, kaynak
MySQL Workbench kullanıyorum.
katma yazar Sami, kaynak
Bu kötü bir sınıf ismi; ViewOffer olarak adlandırılmalıdır.
katma yazar SLaks, kaynak
SQL 'grupla', grup başına yalnızca bir öğe tutar. LINQ GroupBy, yalnızca lambda ifadesine göre (sonucu) gruplanmış tüm öğeleri tutar.
katma yazar Hans Kesting, kaynak

3 cevap

açıkça hata iletisinin belirttiği gibi, GroupBy , ile aynı olmayan bir IGrouping s listesi döndürüyor ViewOffer s.

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

4
katma

"X grubunun sonucu" nu "x" listesine koyamazsınız!

kullanım

List> list = 

ya da sadece

var list = ...

İhtiyacınız olan şey bu:

sqlEntities.viewOffers
    .Where(o => o.ProductId == productId)
    .GroupBy(o => o.OfferId)
    .Select(o => o.Key);

veya

sqlEntities.viewOffers
    .Where(o => o.ProductId == productId)
    .Select(o => o.OfferId)
    .Distinct();
1
katma

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
katma