继前一个question我已经能够简化我的查询但仍然遇到MySQL提供商的问题。
我有一个会员表,记录用户是否是列表的成员。当发生对用户成员资格的更新时,将写入新记录,并保留先前的记录,以允许维护其成员资格的历史记录。获取用户的成员身份涉及选择他们最近的条目。
下面是一些用户列表成员资格数据的示例。目的是找到一个按列表和用户分组的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
我的LINQ表达式如下。
var query = from mem in db.UserListMemberships
where
mem.Inserted >= (from mem2 in db.UserListMemberships where mem.UserID == mem2.UserID && mem.UserListID == mem2.UserListID orderby mem2.Inserted descending select mem2.Inserted).FirstOrDefault()
select mem;
问题是我从MySQL实体提供程序中获取“MySql.Data.MySqlClient.MySqlException:'where子'中的未知列'Extent1.UserID'”的异常。有没有其他方法可以编写可能绕过MySQL异常的e表达式?
答案 0 :(得分:1)
试试这个,看看它是否适合你:
var query =
from mem in db.UserListMemberships
group mem by mem.UserID into mems
select mems.OrderByDescending(m => m.Inserted).First();