Mam stół, nazwijmy go Nagrywanie. Zawierające: ID (int) | CustID (int) | Czas (data/godzina) Danych (varchar)Zapytanie C# LINQ (MYSQL EF) - Odrębne i najnowsze zapisy
muszę ostatnią (najnowszy) rekord dla każdego klienta:
SQL wersji
select * from record as i group by i.custid having max(id);
LINQ 1
dgvLatestDistinctRec.DataSource = from g in ee.Records
group g by g.CustID into grp
select grp.LastOrDefault();
To rzuca błąd:
System.NotSupportedException was unhandled by user code Message=LINQ to Entities does not recognize the method 'Faizan_Kazi_Utils.Record LastOrDefault[Record ](System.Collections.Generic.IEnumerable`1[Faizan_Kazi_Utils.Record ])' method, and this method cannot be translated into a store expression. Source=System.Data.Entity
LINQ wersja 2
var list = (from g in ee.Records
group g by g.CustID into grp
select grp).ToList();
Record[] list2 = (from grp in list
select grp.LastOrDefault()).ToArray();
dgvLatestDistinctRec.DataSource = list2;
To działa, ale jest nieefektywne, ponieważ ładuje wszystkie rekordy z bazy danych do pamięci, a następnie wydobywa tylko ostatni (najnowszy członek) z każdej grupy.
Czy istnieje rozwiązanie LINQ, które zbliża się do wydajności i czytelności wspomnianego rozwiązania SQL?
Jak osiągnąć Mysql + LINQ. Czy DBSet obsługuje Mysql. Jeśli tak, czy możesz powiedzieć, w jaki sposób? Musiałem to osiągnąć i poddałem się w zeszłym tygodniu. – prabhakaran
Potrzebuję tylko podstawowych punktów, przynajmniej tam, gdzie wstawiasz ten ciąg połączenia. – prabhakaran