我有一个表,可以称之为Record。包含: 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;
这工作,但效率很低,因为它从数据库加载到内存中的所有记录,然后提取刚刚过去的(最新成员)各组。
是否有任何LINQ解决方案接近所提到的SQL解决方案的效率和可读性?
您是如何实现Mysql + LINQ的。 DBSet是否支持Mysql?如果是这样,你可以说怎么样?我渴望达到这个目标,并在上周放弃了。 – prabhakaran
我只需要核心点,至少在你放置连接字符串的地方。 – prabhakaran