在表格中,我们称之为temp table
:
ID Type tb1Id tb2Id Detail
1 tb1 a null Detail of 1
2 tb2 null b Detail of 2
3 tb1 a null Detail of 3
4 tb2 null b Detail of 4
现在,a
和b
是2个不同表的外键。
我想将此表分组。
试过这个:
var list1 = db.Temp.Where(x=> x.tb1Id != null).GroupBy(x=> x.tb1.SomeOtherId);
var list2 = db.Temp.Where(x=> x.tb2Id != null).GroupBy(x=> x.tb2.SomeOtherId);
var final = list1.Union(list2); <-- This doesn't work
注意: SomeOtherId
不是tb1
tb2
和temp table
的主键
答案 0 :(得分:0)
您可以使用匿名类型执行此操作。
var reclassified = db.Temp
.Where(item => item.tb1Id != null || item.tb2Id != null)
.Select(item =>
new
{
data = item,
FK = (item.tb1ID != null) ?
item.tb1.SomeOtherId :
item.tb2.SomeOtherId
}
);
运行此查询后,您将拥有所有具有id的对象。那么你应该能够完成你想要做的同样的事情。请注意,实际数据然后存储在匿名的数据中。并且你有一个新的属性/列,&#34; FK&#34;,用于&#34; SomeOtherId&#34;
答案 1 :(得分:0)
db.Temp.GroupBy(x => x.tb1Id ?? x.tb2Id);