无法从 int 转换为“classname”

问题描述 投票:0回答:1

在构建 ASP.NET-MVC 网站时,我试图在我的网站上实现 EDIT 页面,但我遇到了一些困难,特别是在我的控制器中。错误就在这个类中,指向ID:

asp.net-mvc
1个回答
0
投票

问题与关注

根据

List<T>.Contains(T)
,您需要解析
T
对象,该对象是
GestaoAlertas
对象到您的
addresses
List<GestaoAlertas>
类型)。

因此,您会收到以下错误,因为它是与

int

不匹配的类型

无法从 int 转换为“hdsportal.GestaoAlertas”

对于此行:

GestaoAlertas _teste = addresses.Contains(ID);

并且

List<T>.Contains(T)
返回布尔结果。

public bool Contains (T item);

判断某个元素是否在List中。


解决方案

假设:

  1. addresses
    包含
    GestaoAlertas
    条记录

您可以使用以下任一 LINQ 方法通过

GestaoAlertas
addresses
获取
ID
元素:

先决条件:

导入

System.Linq
命名空间。

using System.Linq;

解决方案1:Enumerable.SingleOrDefault

返回序列中的单个特定元素,如果未找到该元素,则返回默认值。

注意:如果输入序列包含多个元素,则会抛出

InvalidOperationException
。适合用于唯一标识符,例如 ID。

GestaoAlertas _teste = addresses.SingleOrDefault(x => x.ID == ID);

解决方案2:Enumerable.Single

返回序列中的单个特定元素。

注意:如果返回

ArgumentNullException
,则会抛出
null

GestaoAlertas _teste = addresses.Single(x => x.ID == ID);

解决方案 3:Enumerable.FirstOrDefault

返回序列的第一个元素,如果未找到元素,则返回默认值。

GestaoAlertas _teste = addresses.FirstOrDefault(x => x.ID == ID);

解决方案 4:Enumerable.First

返回序列的第一个元素。

注意:如果返回

ArgumentNullException
,则会抛出
null

GestaoAlertas _teste = addresses.First(x => x.ID == ID);
© www.soinside.com 2019 - 2024. All rights reserved.