按列分组.如果为空,按其他列分组
本文关键字:其他 如果 | 更新日期: 2023-09-27 18:08:06
在实体框架中,我正在使用一个具有自引用列的表,该列是这样创建的,我无法改变这种结构,因为它已经在项目中使用了太多的地方:
Entities
--------
CreationDate | EntityID | OriginalEntityID | Name
2014-01-02 10:02:02 | 819 | NULL | First draft
2014-02-05 14:04:20 | 899 | 819 | Second draft
2014-05-16 02:45:40 | 907 | 819 | Third draft
2014-05-16 02:45:40 | 908 | NULL | Other entity
然后有另一个表像这样:
EntityValues
------------
EntityValueID | Value | EntityID
1 | 20 | 819
2 | 30 | 899
3 | 25 | 899
4 | 12 | 907
5 | 20 | 908
6 | 99 | 908
我需要在实体框架中进行分组,以便上面的示例数据将返回两组值,如下所示:
Values
------
20
30
25
12
和
Values
------
20
99
是否有任何方法甚至在实体框架中做到这一点?基本上,按OriginalEntityID
分组,但如果它为空,则按EntityID
分组。
我不知道从哪里开始,所以我可以尝试的代码不多。
在我的实际代码中,我在一个组中循环单个值,并对整个组进行线性回归,然后将所有组相互比较。我正在辩论只是循环在所有的数据点(行)单独,从那里找出他们属于什么组。性能在这里并不是真正的优先级,因为我有一个单独的进程在夜间运行这些东西,所以如果需要一段时间也没关系。
空合并操作符也适用于实体框架。
的例子:
db.EntityValues.GroupBy(v => v.Entity.OriginalEntityID ?? v.Entity.EntityID);