这是表,我们称它为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是两个不同表的外键。
我想把这张桌子分组。
试过这个:
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不是temp table中所指的tb1和tb2的主键。
发布于 2017-05-10 16:08:31
你可以用匿名类型来做。
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的对象。然后,您应该能够完成同样的事情,您想要做的与它分组。注意,实际数据以“数据”的形式存储在匿名中,您将有一个新的属性/列"FK",用于"SomeOtherId“。
发布于 2017-05-10 18:05:28
db.Temp.GroupBy(x => x.tb1Id ?? x.tb2Id);https://stackoverflow.com/questions/43896169
复制相似问题