Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何基于公共属性在一个表中显示来自两个模型的数据_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 如何基于公共属性在一个表中显示来自两个模型的数据

C# 如何基于公共属性在一个表中显示来自两个模型的数据,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,假设我有两种不同的型号: 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

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

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; }
}
我想在同一个表中的单个视图中显示它。这些模型大多是不相关的。我想忽略表中的ID,但以如下方式显示按日期排序的项目:

| Date       | Attribute1 | Attribute2 | Attribute3 |
| 2008-01-01 | null       | value      | value      | (ModelB item)
| 2009-01-01 | value      | null       | null       | (ModelA item)
| 2010-01-01 | value      | null       | null       | (ModelA item)
| 2011-01-01 | null       | value      | value      | (ModelB item)
为清楚起见:我不希望显示差异,除非在表格中有空白点,其中一个单元格没有数据

连接数据集不起作用,因为没有我要连接的值(我希望显示所有日期),我要连接的更多的是列


我怎样才能做到这一点呢?

你可以把它们联合起来,就像你应该做的那样

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

并在联合列表上执行操作

不清楚您在问什么,但它是否等同于SQL的联合操作?它确实是一个联合运算符,需要额外的步骤来创建新对象才能执行此操作,如接受的答案所示,我最终创建了一个新类来捕获这个无名对象,并在我的视图中使用它。工作得很好!