mysql-在LINQ中执行FirstOrDefault的另一种方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-在LINQ中执行FirstOrDefault的另一种方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1761字,纯文字阅读大概需要3分钟。
内容图文
![mysql-在LINQ中执行FirstOrDefault的另一种方法](/upload/InfoBanner/zyjiaocheng/887/492e12c189994ceba92a8a89fe61f047.jpg)
我有一个成员资格表,用于记录用户是否为列表的成员.当对用户的成员资格进行更新时,会写入新记录,而以前的记录将保留原样,从而可以保留其成员资格的历史记录.要获取用户的会员资格状态,需要选择他们的最新条目.
下面是一些用户列表成员资格数据的示例.目的是找到一个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();
解决方法:
没有发布代码,任何人都很难看到您的问题所在.
您是否不能仅按日期字段排序结果,然后选择第一条记录?像users.OrderByDescending(u => u.Inserted).FirstOrDefault()之类的东西?
内容总结
以上是互联网集市为您收集整理的mysql-在LINQ中执行FirstOrDefault的另一种方法全部内容,希望文章能够帮你解决mysql-在LINQ中执行FirstOrDefault的另一种方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。