实体框架按日期分组并返回新类

2023-12-31

我正在使用 .NET 和实体框架。 我想按日期对表格进行分组,不包含时间部分。

我有课:

public sealed class QueryItem {
    public int Year { get; set; }
    public int Month { get; set; }
    public int Day { get; set; }
}

方法(我正在使用BLToolkit,如果你想知道什么是DbManager):

protected override IQueryable<QueryItem> InitiateQuery() {
    return
        from query in DbManager.GetTable<SomeTableModel>()
        group query by new { Year = query.CreationDate.Year, Month = query.CreationDate.Month, Day = query.CreationDate.Day }
        into list1
        select new QueryItem {Year = list1.Key.Year, Month = list1.Key.Month, Day = list1.Key.Day};
}

在这个方法中,linq 翻译成这个 SQL 查询:

SELECT
    [query].[CreationDate]
FROM
    [SomeDatabase.SomeTable] [query]
GROUP BY
    DatePart(Year, [query].[CreationDate]),
    DatePart(Month, [query].[CreationDate]),
    DatePart(Day, [query].[CreationDate]),
    [query].[CreationDate]

这是错误的查询,因为它不只按日期分组。

但是如果我使用这段代码(它不可用,我需要返回一个类对象):

var result =
    from query in DbManager.GetTable<SomeTableModel>()
    group query by new { Year = query.CreationDate.Year, Month = query.CreationDate.Month, Day = query.CreationDate.Day }
    into list1
    select list1;

它将被翻译成这样:

SELECT
    [t1].[c1] as [c11],
    [t1].[c2] as [c21],
    [t1].[c3] as [c31]
FROM
    (
        SELECT
            DatePart(Year, [selectParam].[CreationDate]) as [c1],
            DatePart(Month, [selectParam].[CreationDate]) as [c2],
            DatePart(Day, [selectParam].[CreationDate]) as [c3]
        FROM
            [SomeDatabase.SomeTable] [selectParam]
    ) [t1]
GROUP BY
    [t1].[c1],
    [t1].[c2],
    [t1].[c3]

这是正确的查询。

我想实体框架试图优化我的查询或类似的东西,这就是我得到错误查询的原因。

我对吗? 我的做法正确吗? 我应该做什么(也许使用直接 SQL 查询或其他方式)?


使用起来更简单实体函数 http://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.aspx* here:

var result =
    from query in DbManager.GetTable<SomeTableModel>()
    group query by EntityFunctions.TruncateTime(query.CreationDate)
    into list1
    select list1;

*DbFunctions http://msdn.microsoft.com/en-us/library/system.data.entity.dbfunctions.aspx as of Entity Framework 6.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架按日期分组并返回新类 的相关文章

  • 如何使用 LINQ 获取唯一 id 列的最大值

    如何使用 LINQ 以最简单的方式编写此代码 SELECT MAX Game id AS MaxValue FROM Dim Game Try context Dim Games Max g gt g Game id
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud

随机推荐

  • SELECT 符合条件的行前后N行?

    我想要复制的行为就像 grep with A and B旗帜 例如grep A 2 B 2 hello myfile txt会给我所有包含 hello 的行 还有它之前的两行和之后的两行 让我们假设这个表模式 id message 1 On
  • 从不同的文件夹加载 DLL 引用?

    我有一个引用 DLL 的 NET 控制台应用程序 如果 DLL 与 EXE 位于同一文件夹中 它运行正常 但我想将 DLL 放在不同的文件夹中 我怎样才能做到这一点 If the DLL位于子文件夹中 您可以将此文件夹添加到AppDomai
  • 点击与其关联的表格行时如何选择地图图钉?

    这里我有2个看法 墙视图控制器 表视图控制器 墙视图控制器包含 MKMapView 以及表视图控制器是一个子类PFQueryTableViewController显示与注释固定关联的内容行墙视图控制器 表视图控制器添加为子视图墙视图控制器
  • Haskell:lift 与 liftIO

    在什么情况下应该liftIO使用 当我使用时ErrorT String IO the lift函数的作用是将 IO 操作提升为ErrorT so liftIO似乎是多余的 lift总是从 上一层 升起 如果需要从第二层提升 则需要lift
  • 使用异步 Session_Start 方法时出现会话问题?

    我最近开始使用 NET 4 5 而不是 NET 4 0 我很喜欢async特征 但是 当我在 Global asax 的 Session Start 事件中的 ASP NET 中使用它时 无论我做什么 如果我执行等待并访问会话 都会导致错误
  • 使用 Rx 运行直方图流

    我有以下单字母流 A B C A D B A C D 从这个流中 我想要一个每个字母的运行计数流 A 1 A 1 B 1 A 1 B 1 C 1 A 2 B 1 C 1 A 2 B 1 C 1 D 1 A 2 B 2 C 1 D 1 A 3
  • 为什么as_const的const&&重载被删除了?

    On a 有关 C 17 进展的博客 http talesofcpp fusionfenix com post 23 interlude我读了以下内容 P0007提出了一个辅助函数模板as const 这只是 接受一个引用并将其作为引用返回
  • python库查找图像轮廓

    我正在使用 Python 和 PyQt4 我正在寻找一个库 可以使用它找到图像 位图 的轮廓路径 对于 轮廓路径 我指的是一个多边形 它将图像中间的填充 非透明 像素与周围的透明像素分开 我无法通过谷歌找到任何东西 这让我怀疑我是否使用了正
  • Kubernetes - 集群外部 TCP 连接的不同“服务”[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 Azure Kubernetes 服务 AKS 并且我只需要用于 TCP 连接的服务 我根本不需要 HTTP 我认为强调这
  • 自定义 UISlider:拖动到外部时避免更新

    我对 iPhone 开发还很陌生 我正在构建我的第一个应用程序 在我的一个视图控制器中 我构建了一个 customSlider 它应该充当本机 滑动解锁 滑块 我现在的疑问是如何实现 拖到外面 的行为 如前所述 我希望它与本机滑块完全相同
  • 通过复制 TesserCap 的斩波滤波器去除验证码图像的背景噪声

    我有一个验证码图像 如下所示 使用名为的实用程序泰瑟帽 http www mcafee com us downloads free tools tessercap aspx通过 McAfee 我可以对图像应用 斩波 滤镜 在运行之前 我确保
  • 如何在后台保持VOIP套接字连接?

    我的应用程序要求 由于某些原因 我应该维护一个套接字连接以触发服务器推送上的本地通知 而不使用推送通知 APN 所以我使用iPhone的VOIP后台功能来维持套接字连接 1 我已经为 VOIP 配置了一个流 以便保持套接字连接在后台运行 那
  • 为sybase设置jdbc连接池

    我目前正在为每个 jsp 或 servlet 创建一个 jdbc 连接 如何为sybase创建jdbc连接池 这样就可以避免为每个jsp servlet创建连接 并且jsp servlet可以直接获取连接并与数据库进行事务处理 任何人都可以
  • 检查图像是否不存在然后隐藏 div

    如果 div 中有图像 则隐藏该 div 但如果图像确实存在 那么我需要保持 div 可见 但它不起作用 这是我的代码 HTML table tbody tr td div div p PRODUCT FEATURES p div img
  • 如何为VS2010重新安装MVC 2工具?

    我不小心卸载了 Visual Studio 2010 的 Asp Net MVC 2 Tools 如何重新安装它 MVC2 下载似乎只包含 VS2008 工具 我在 google 上搜索的所有内容都表明 MVC 2 包含在 VS2010 中
  • 每当我尝试粘贴时,Excel VBA 粘贴特殊方法都会失败

    大家好 我对 vba 相当陌生 我正在尝试捕获工作表上的所有 ctrl v 事件 并将剪贴板上的所有内容粘贴到当前选定的单元格中 大多数时候 我想要复制的是来自 Firefox 或记事本的文本 E I 客户的姓名或电话号码位于我们的网站上
  • 当质量门失败时,如何使 Maven 构建失败?

    早些时候我使用sonar maven plugin version 3 2然后 当声纳质量门失败时 构建也会失败 现在我正在使用sonar maven plugin version 3 7 0 1746 但事实并非如此 即使质量门失败 ma
  • Android - 如何在具有特定位置、缩放级别和标记的 Android 应用程序中启动 Google 地图意图

    地图意图不适用于特定缩放级别以及自定义标记 float lat 40 714728f float lng 73 998672f String maplLabel ABC Label final Intent intent new Inten
  • 为什么 dataTokens 在 Route 中?

    context MapRoute authorized credit card owners ownerKey authorizedcreditcard action new controller authorizedcreditcard
  • 实体框架按日期分组并返回新类

    我正在使用 NET 和实体框架 我想按日期对表格进行分组 不包含时间部分 我有课 public sealed class QueryItem public int Year get set public int Month get set