无法将类型“System.Collections.Generic.List<model1>”隐式转换为“System.Collections.Generic.List<model2&
Posted
技术标签:
【中文标题】无法将类型“System.Collections.Generic.List<model1>”隐式转换为“System.Collections.Generic.List<model2>”【英文标题】:Cannot implicitly convert type 'System.Collections.Generic.List<model1>' to 'System.Collections.Generic.List<model2> 【发布时间】:2021-11-22 16:51:55 【问题描述】:我在 SQL 数据库中基于以下类创建了两个表,我的第一个表是(Clients):
public string Id get; set; = default!;
public double? Name get; set; = default!;
public string? FamilyName get; set; = default!;
public List<Addresses> ClientAddress get; set; = default!;
我的第二张表是地址:
public string Id get; set; = default!;
public string Address get; set; = default!;
我在互联网上找到了这种方法!现在问题是我从 UI 获取客户端模型并想将它存储在 linq 中我应该如何做?我得到错误:
public Task<bool> StoreModel(Clients client)
var listtostore = new ClientsEntity()
Name = client.Name,
FamilyName = client.FamilyName,
ClientAddress =client.ClientAddress//i get conversion error here
我的客户实体是:
[Key]
public string Id get; set; = default!;
public double? Name get; set; = default!;
public string? FamilyName get; set; = default!;
public List<Addresses> ClientAddress get; set; = default!;
【问题讨论】:
请出示ClientsEntity
类
@OneCricketeer 更新了我的问题
为什么你实际上有两个完全相同的类? Clients
和 ClientsEntity
?
不要以复数形式命名类。以复数形式命名作为集合的属性
我的猜测是客户端类 (DTO) 中的“地址”与 ClientEntity (实体) 中的“地址”是不同的类型。您的命名约定非常混乱,并且可能不太一致。在任何情况下,如果您在实体和实体旁边使用 ViewModel/DTO 时遇到麻烦,您不应该在实体和 DTO 之间混合实体引用(地址)。您的实体 DTO 的地址 DTO 很可能具有相同的类名。
【参考方案1】:
ClientAddress 是一个列表
先初始化它们然后再试一次
listtostore.ClientAddress = new List<Addresses>();
foreach(var item in client.ClientAddress)
listtostore.ClientAddress.Add(item)
【讨论】:
这是最好的方法吗?以上是关于无法将类型“System.Collections.Generic.List<model1>”隐式转换为“System.Collections.Generic.List<model2&的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS
无法将类型为“Newtonsoft.Json.Linq.JObject”的对象转换为类型“System.Collections.Generic.Dictionary`2[System.String,S
无法将类型“System.Collections.Generic.List<model1>”隐式转换为“System.Collections.Generic.List<model2&
.Net 4.0 无法将“System.Collections.Generic.List`1[ClassName]”类型的对象转换为“ClassName”类型
无法将“Newtonsoft.Json.Linq.JArray”类型的对象转换为“System.Collections.Generic.List”类型
无法将当前 JSON 数组(例如 [1,2,3])反序列化为“System.Collections.Generic.Dictionary”类型