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# 如何更好地组合从一个Interbase继承的不同类型的通用列表?_C#_Linq_Generics_Inheritance_Union - Fatal编程技术网

C# 如何更好地组合从一个Interbase继承的不同类型的通用列表?

C# 如何更好地组合从一个Interbase继承的不同类型的通用列表?,c#,linq,generics,inheritance,union,C#,Linq,Generics,Inheritance,Union,我有接口: public interface IBase { Guid Id { get; set; } string ObjectName { get; set; } string Val { get; set; } } 还有几个实现这个接口的类 public class A : IBase { Guid Id { get; set; } string ObjectName { get; set; } string Val { get; set; } } public class B:IB

我有接口:

public interface IBase
{
Guid Id { get; set; }
string ObjectName { get; set; }
string Val { get; set; }
}
还有几个实现这个接口的类

public class A : IBase
{
Guid Id { get; set; }
string ObjectName { get; set; }
string Val { get; set; }
}

public class B:IBase
{
Guid Id { get; set; }
string ObjectName { get; set; }
string Val { get; set; }
}
我还有
DTO
课程

public class CdcDto
{
 public List<A> A { get; set; }
 public List<B> B { get; set; }
 public List<IBase> UnionAB => A.Union(B).ToList();
}
公共类CdcDto
{
公共列表A{get;set;}
公共列表B{get;set;}
公共列表UnionAB=>A.Union(B.ToList();
}
DTO
中,我得到错误:

列表
不包含“联合”和最佳的定义 扩展方法重载
IQueryable.Union(IQueryable,
IEnumerable)
需要类型为
IQueryable的接收器

一项澄清。工会的课程远远不止两个。如何更好地组合这些类?我不想比较课程。我只想要
union all
SQL

中的那样,您可以尝试:

public List<IBase> UnionAB = new List<IBase>(A);
UnionAB.AddRange(B);
public List UnionAB=新列表(A);
UnionAB.AddRange(B);
您可以尝试:

public List<IBase> UnionAB = new List<IBase>(A);
UnionAB.AddRange(B);
public List UnionAB=新列表(A);
UnionAB.AddRange(B);
试试这个:

public List<IBase> UnionAB => A.Union<IBase>(B).ToList();
public List<IBase> UnionAB => A.Union<IBase>(B).ToList();
public List UnionAB=>A.Union(B.ToList();
试试这个:

public List<IBase> UnionAB => A.Union<IBase>(B).ToList();
public List<IBase> UnionAB => A.Union<IBase>(B).ToList();
public List UnionAB=>A.Union(B.ToList();

错误消息告诉您,
Union

需要“IQueryable类型”的接收器

因此,您需要将A转换为
Ibase
类型:

public List<IBase> UnionAB => A.Cast<IBase>().Union(B).ToList();

错误消息告诉您,
Union

需要“IQueryable类型”的接收器

因此,您需要将A转换为
Ibase
类型:

public List<IBase> UnionAB => A.Cast<IBase>().Union(B).ToList();