假设我有两种不同的模型:
db.collection.aggregate([
{
"$project": {
"transaction": {
"$filter": {
"input": "$transaction",
"as": "t",
"cond": {
"$setIsSubset": [
[
"$$t.type"
],
[
"CASH",
"CHEQUE"
]
]
}
}
}
}
},
{
"$project": {
"amount": {
"$sum": "$transaction.amount"
}
}
},
{
"$group": {
"_id": null,
"total": {
"$sum": "$amount"
}
}
}
])
我想在同一个表中的单个视图中显示它。模型大多不相关。我想忽略表中的ID,但是以这样的方式显示按日期排序的项目:
public class ModelA
{
public int Id { get; set; }
public DateTime Date { get; set; }
public string Attribute1 { get; set; }
}
public class ModelB
{
public int Id { get; set; }
public DateTime Date { get; set; }
public string Attribute2 { get; set; }
public string Attribute3 { get; set; }
}
为清楚起见:我不希望显示差异,除了在表格中有一个空白点,其中一个单元格没有数据。
加入数据集不起作用,因为没有我想要加入的值(我想要显示所有日期),它更像是我想要加入的列。
我将如何实现这一目标?
答案 0 :(得分:0)
你可以联合他们,你应该这样做
list1.Select(x => new {
Id = x.Id,
Date = x.Date,
Attribute1 = x.Attribute1,
Attribute2 = null,
Attribute3 = null
}
).Union(list2.Select(x => new {
Id = x.Id,
Date = x.Date,
Attribute1 = null,
Attribute2 = x.Attribute2,
Attribute3 = x.Attribute3
}));
并通过联合列表进行操作