私はテーブルを持って、レコードと呼ぶことができます。含まれるもの: ID(int)| CustID(int)|時間(日時)|データ(VARCHAR)C#LINQクエリ(MYSQL EF) - 別個の最新のレコード
私は、各顧客の最新(直近)レコード必要があります。これは、スロー
SQL
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();
をエラー:
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バージョン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;
これは動作しますが、それはメモリにデータベースからすべてのレコードをロードした後、各グループのちょうど最後の(最も最近のメンバー)を抽出しているため、非効率的です。
前述のSQLソリューションの効率性と可読性に近づくLINQソリューションはありますか?
Mysql + LINQの達成方法DBSetはMysqlをサポートしていますか?もしそうなら、あなたはどのように言うことができますか?私はこれを達成するために死にそうであり、先週にあきらめました。 – prabhakaran
私はちょうどその接続文字列を置く場所で、コアポイントが必要です。 – prabhakaran