如何根据公共属性在一个表中显示两个模型的数据

时间:2017-04-22 16:48:17

标签: c# asp.net asp.net-mvc

假设我有两种不同的模型:

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; }
}

为清楚起见:我不希望显示差异,除了在表格中有一个空白点,其中一个单元格没有数据。

加入数据集不起作用,因为没有我想要加入的值(我想要显示所有日期),它更像是我想要加入的列。

我将如何实现这一目标?

1 个答案:

答案 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
                     }));

并通过联合列表进行操作

相关问题