linq .First()'无法在EFCore 3中翻译[重复]

pepwfjgg  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(103)

此问题已在此处有答案

How to select only several columns from GroupBy... First()(1个答案)
27天前关闭
在使用EF Core 3.1的Linq上,在Group By查询中使用.First()是否有一个不错的方法?
下面是一个从SQL阅读的查询示例

var test = from r in dc.Role
                join f in dc.Role_User on r.RoleID equals f.RoleID
                group f by r.RoleID into g
                select new
                {
                    RoleID = g.Key,
                    SampleUserID = g.First().UserID,
                };

字符串
此查询给出错误:
LINQ表达式'(GroupByShaperExpression:.....无法翻译“.First()”。
通过在单独的查询中执行组,然后在其上进行联接似乎不起作用。
转换为IEnumerable可能会起作用,但对于大型表,将数据带到客户端会导致性能问题。IQueryable是首选。

xqkwcwgp

xqkwcwgp1#

您可以在下面的代码中使用First()获取UserID。

var test = from r in dc.Role join f in dc.Role_User on r.RoleID equals f.RoleID
group f by r.RoleID into g
Select new {
RoleID=g.Key,
GroupingData = g
};
var res = test.Select(t=>new {
RoleID=t.RoleID,
SampleUserID=t.GroupingData.First().UserID
}

字符串
在该流程中,在初始查询中执行分组,并在测试中存储为组数据。从第二个查询中,我们得到了UserID。

相关问题