gpt4 book ai didi

c# - 如何使用 IQueryable 对复杂对象执行 GroupBy

转载 作者:行者123 更新时间:2023-11-30 12:21:38 27 4
gpt4 key购买 nike

我正在寻找一种对复杂对象执行 GroupBy 的方法,而不仅仅是一个属性。问题是我想在 IQueryable 上执行此操作,因为在这种情况下从表中获取所有数据是一个非常糟糕的主意。

我们正在使用 Entity Framework 6.1。

这个类看起来像这样:

 public class Pin {
public Guid Id {get;set;}
public Guid PageId {get;set;} /* this is the foreign key to our Pages-table */
public PageClass Page {get;set;} /* this is a relation */
}

我需要报告某个页面被“固定”的次数,同时打印该页面的名称。

现在我的代码是这样的:

var pinnedPages = GetAll().GroupBy(x => x, comparer);

foreach (var pinnedPage in pinnedPages)
{
var numberOfTimesPinned = pinnedPage.Count();
var pin = pinnedPage.Key;

//write a line to the report
}

但如果我对 PageId 进行分组,pinnedPage.Key 显然会返回一个 Guid,而我需要整个 Page 对象来满足我的报告需求。

我也尝试过实现自定义比较器,但这不能转换为 SQL,显然这就是为什么它也不起作用。

最佳答案

GetAll().GroupBy(x => x.pageId).Select(_ => new {key = _.Key, page = _.FirstOrDefault().Page, count = _.Count()});

这将根据 pageId 进行分组,但是选择将创建一个新的匿名对象,该对象将包含键 (pageId) 并选择第一个 PageClass 对象

关于c# - 如何使用 IQueryable 对复杂对象执行 GroupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44846970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com