linq调用mysql函数_mysql-在LINQ中执行FirstOrDefault的另一种方法

我有一个成员资格表,用于记录用户是否为列表的成员.当对用户的成员资格进行更新时,会写入新记录,而以前的记录将保留原样,从而可以保留其成员资格的历史记录.要获取用户的会员资格状态,需要选择他们的最新条目.

下面是一些用户列表成员资格数据的示例.目的是找到一个LINQ表达式,该表达式按列表和用户分组,但仅返回具有最近插入记录的行.

List Name, Username, Comment, ExpiresOn, Inserted

Test List, joeb, second update, 2012-03-13 16:55:03, 2012-01-31 22:28:40

Test List, joeb, first update, 2012-02-13 16:55:01, 2012-01-31 22:28:39

Test List, joeb, initial, 2012-01-13 16:55:02, 2012-01-31 22:28:38

SQL查询说明了如何提取当前列表成员状态.

select ulm2.ID, ulm2.ExpiresOn, ulm2.Comment, ulm2.Inserted

from UserListMembership as ulm1

left outer join UserListMembership ulm2 on ulm1.id = ulm2.id

group by ulm1.userlistid, ulm1.userid;

问题是如何为不使用嵌套的FirstOrDefault调用的查询编写LINQ表达式,这将导致我的MySQL实体框架提供程序抛出“ System.NotSupportedException:不支持指定的方法”.例外?

更新:

下面是我失败的LINQ表达式,添加FirstOrDefault调用后,它将引发“不支持指定的方法”.

var query = from mem in db.UserListMemberships

where

mem.User.UserUsernames.Any(y => y.Username.ToLower() == username.ToLower())

&& mem.UserList.Account.Subscriptions.Any(x => x.ID == subscriptionID)

&& mem.ExpiresOn > utcNow

group mem by new { mem.UserListID, mem.UserID } into g

select new { UserListMembership = (from mem2 in db.UserListMemberships where mem2.UserListID == g.Key.UserListID && mem2.UserID == g.Key.UserID orderby mem2.Inserted descending select mem2).FirstOrDefault() };

return query.Select(a => a.UserListMembership).ToList();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值