c# - 将来自不同存储过程的结果合并到 C# 中的单个列表中
问题描述
我正在尝试使用 Concat 方法将两个不同的列表连接在一起,如下所示。我需要将第二个列表添加到第一个列表中,以便它可以作为一个列表出现。
var term = dc.AgentTerm(Agentcode).ToList();
var hosp = dc.AgentHospCashPlan(Agentcode).ToList();
var life = term.Concat(hosp).ToList();
但是当我尝试它时,我得到了这个错误。
错误 16 实例参数:无法转换
System.Collections.Generic.List<IbsMobile.AgentTerm_Result>
为System.Linq.IQueryable<IbsMobile.AgentHospCashPlan_Result>
C:\Project\IbsMobile\IbsMobile\Controllers\ParamController.cs 506 24 IbsMobile错误 17
System.Collections.Generic.List<IbsMobile.AgentTerm_Result>
不包含“Concat”的定义,并且最佳扩展方法重载System.Linq.Queryable.Concat<TSource>(System.Linq.IQueryable<TSource>, System.Collections.Generic.IEnumerable<TSource>)
有一些无效参数 C:\Project\IbsMobile\IbsMobile\Controllers\ParamController.cs 506 24 IbsMobile
我在网上查了一下,我看到的只是如何将“System.Linq.IQueryable”转换为“System.Collections.Generic.IList”。
我分配给 term 和 Hosp 的结果来自存储过程。
我之前在具有相同类的列表上使用过 concat 方法,并且效果很好。
我猜这个错误是因为结果集来自不同的类。
我知道这是一个新手问题,但我不确定我做错了什么。
解决方案
您不能Concat
列出两种不同的来源类型。见函数签名:
public static System.Collections.Generic.IEnumerable<TSource> Concat<TSource>
(this System.Collections.Generic.IEnumerable<TSource> first,
System.Collections.Generic.IEnumerable<TSource> second);
仍然这样做将每个列表投影到共享相同基本类型或接口的某种类型中。一些结构:
public interface IInterface {}
public class AgentTermDTO : IInterface {}
public class AgentHospCashPlanDTO : IInterface {}
或者一个快速而肮脏的解决方案(不要选择这个)是将每个转换为object
s 的集合:list1.Cast<object>().Concate(...)
推荐阅读
- ios - 找不到“此应用程序正在从后台线程修改自动布局引擎”的来源
- npm - 如何:创建反应应用程序:将构建项目文件夹移动到 CDN
- python - 如何使用 IPython 的事后 %debug 启动 pudb?
- docker - 来自守护进程的错误响应 - scrapinghub/splash
- java - import com.google.android.gms.common.util.CrashUtils.ErrorDialogData 的依赖是什么
- design-patterns - Event sourcing, CQRS with Axon Server / Framework - Event Sourcing 整个应用程序是个好主意吗?
- c# - 如何在 WPF 中使用 MVVM 设计模式以编程方式选择和设置焦点数据网格行
- c# - WPF中根据DataTable List生成几个Comboboxes
- dynamic - Uipath中的动态数据网格行选择问题
- reactjs - 做出反应。你不应该使用
外面