Array.Find> 错误:List 不包含“StatusID”的定义

本文关键字:List Status StatusID 定义 Find 错误 Array 包含 | 更新日期: 2023-09-27 18:17:13

我试图找到与此类似的问题。我想知道是否有人可以指出我的代码的缺陷。我有一个名为 Status statuses 类类型的List,该类如下所示:

public class Status
{
    public int StatusID { get; set; }
    public string StatusDescr { get; set; }
    public string StatusType { get; set; }
}

我从SQL中检索记录数组/列表,并希望使用已知的StatusID查找StatusDescr:

List<Status> statuses = Status_Get(inputAction, dataDef);
var inputStatusID = fooData["StatusID"];
string statusDescr = Array.Find<List<Status>>(statuses, item => item.StatusID == inputStatusID).StatusDescr;

但是我在第 3 行的 item.StatusID 上收到一个错误,说: 'List<Status> does not contain a definition for 'StatusID' and no extension method 'StatusID' accepting a first argument of type 'List<Status>' could be found'

显然,这是因为状态 ID 存在于状态类型上,而不是 List<Status> .如果我将其更改为 Array.Find<Status> ,我得到一个错误statuses说:"无法从"转换"...列表<...DataTypes.View.Status>' 到 '...DataTypes.View.Status[]'.

基本上我不在乎statuses是列表、数组、动态等。我只想从具有匹配状态 ID 的状态对象中检索 StatusDescr。对数据类型有什么想法吗?我应该使用除Array.Find之外的东西吗?

编辑:如果我像这样Find后取出数据类型:

 Array.Find(statuses, item => item.StatusID == inputStatusID).StatusDescr;

我在Find时收到一个错误:方法"Array.Find(T[],谓词("的类型参数无法从用法中推断出来。尝试显式指定类型参数

Array.Find<List<Status>> 错误:List<Status> 不包含“StatusID”的定义

var result = statuses.FirstOrDefault(x=> x.StatusID == inputStatusID);
string statusDescr = result?.StatusDescr;

你需要这样的东西。

在这里检查dotnet小提琴

Array.Find需要一个数组作为第一个参数,但你有一个列表而不是数组。您可以从列表中获取数组,但最好使用 LINQ 扩展方法First

List<Status> statuses = Status_Get(inputAction, dataDef);
var inputStatusID = fooData["StatusID"];
string statusDescr = statuses.First(item => item.StatusID == inputStatusID).StatusDescr;
相关文章: