c# - 最好的扩展方法重载需要 List 类型的接收器
问题描述
最好的扩展方法重载需要 List 类型的接收器我面临这个问题:
list jvdem 不包含 ToModelListJVDET 的定义,最好的扩展重载方法 modelhelper.ToModelListJVDET(List) 需要 list 类型的接收器
所以请检查我的代码并指导我如何解决这个问题
这是我的代码:
// Controller
public IActionResult Index() {
List<JVDM> jVDMs = new LocationHandler().GetjVDM().ToModelListJVDET();
return View(jVDMs);
}
// ModelHelper class
public static List<JVDetModel> ToModelListJVDET(this List<JVDetModel> entityJVDetModels) {
List<JVDetModel> jVDetModel = new List<JVDetModel>();
foreach (var i in entityJVDetModels) {
jVDetModel.Add(i);
}
jVDetModel.TrimExcess();
return jVDetModel;
}
// Location Handler
public List<JVDM> GetjVDM() {
using (myDBContext context = new myDBContext()) {
return (from c in context.JVDetTable select c).ToList();
}
}
解决方案
你的问题在这里:
GetjVDM().ToModelListJVDET();
GetjVDM()
List<JVDM>
在ToModelListJVDET
预期中返回List<JVDetModel> entityJVDetModels
您可以执行以下操作:
- 将期望更改
ToModelListJVDET
为List<JDVM>
public static List<JVDetModel> ToModelListJVDET(this List<JDVM> JDVMs) {
List<JVDetModel> jVDetModel = new List<JVDetModel>();
foreach (var i in JDVMs) {
jVDetModel.Add(
// Create the new model
new JVDetModel() {
Propery1 = i.Property1
// etc in mapping
}
);
}
jVDetModel.TrimExcess();
return jVDetModel;
}
- 您可以做的另一件事是从您的 linq 中选择 JVDetModel 并有效地
List<JVDetModel>
从GetjVDM
public List<JVDetModel> GetjVDM() {
using (myDBContext context = new myDBContext()) {
return (from c in context.JVDetTable select new JVDetModel {/* Create the model here*/}).ToList();
}
}
推荐阅读
- laravel - 在 laravel 中实现 reCaptcha V3 的问题
- homebrew - 原始 brew update 错误需要运行 git fetch --unshallow,但又遇到了 git fatal
- laravel - 拉拉维尔 | 重定向不会更改 URL
- apache-spark - 在 Pyspark / AWS Glue 中打开 Parquet 文件时重命名列会使所有数据为空
- c# - 在统一构建游戏后,我的游戏无法运行,但它在统一编辑器上运行
- java - 如果用户输入(双)包含多个点 (.),我如何检查?
- indexing - CUDA 中的每个内核调用是否保证唯一线程 ID?
- sql - 如何将算术和与 SQL 中的分析函数结合起来进行运行
- javascript - 将对象内的多个数组合并为一个数组
- python - 如何在点之间连接线