![]() |
1
3
如果您明确地想要使用LINQ动态查询库,那么我的答案不会是您想要的,但是如果您想要您想要的行为,并且您很乐意使用常规的LINQ,那么我认为我可以帮助您。
基本上我创造了一个
所以您的LINQ查询现在变成了这两个:
第一个查询用于强制对数据库执行简单的select查询,并仅返回要分组的记录。一般来说
第二个查询通过创建
我已经包括了
现在,
这里是:
此类的分组逻辑如下所示:
如果我误解了下拉值是如何打开和关闭分组的,那么您应该只需要更改这些方法,但这段代码的关键在于,当分组打开时,它应该根据条目中的值返回一个组值,否则它应该为所有条目返回一个公共值。如果该值对于所有条目都是通用的,那么逻辑上它只创建一个与完全不分组相同的组。
如果要分组的下拉列表更多,则需要向
因此,这个逻辑表示您想要的动态分组。请告诉我我是否帮助过你,或者你是否需要更多的细节。 享受! |
![]() |
2
8
这里是动态LINQ——当然,您可以在运行时构建groupby和选择字符串:
下面是一个普通的linq方法,在我的同事指出之前,它一直在逃避我——这基本上是没有grouper类的谜活动的解决方案:
|
![]() |
3
0
我知道这个问题发布已经有一段时间了,但是最近我不得不处理一个类似的问题(在运行时由用户选择的多个列进行动态分组),下面是我的看法。
关于性能下降,我认为这不是一个(大)问题。即使动态构造了分组SQL,查询也必须返回与没有分组的查询相同的行数。因此,尽管在这种方法中,分组不是由数据库完成的,但强制查询执行返回的行数与使用分组条件的假设性SQL查询返回的行数相同。当然,数据库在内存分组方面可能优于C代码,但流量的大小完全取决于行数。(
|
![]() |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 3 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 3 年前 |
![]() |
Murat Güzel · EF存储库模式错误{'Id'}已被跟踪 3 年前 |
![]() |
dotnetdevcsharp · 减少基于数据类型获取设置的方法数量 3 年前 |
![]() |
saravanan049 · 在实体框架中回滚Azure SQL数据库 3 年前 |