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

jhh*_*f02 0 c# arrays find

我试着在这个问题上找到一个类似的问题.我想知道是否有人可以用我的代码指出这个漏洞.我有一个类型类List调用,该类看起来像这样:statusesStatus

public class Status
{
    public int StatusID { get; set; }
    public string StatusDescr { get; set; }
    public string StatusType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我从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;
Run Code Online (Sandbox Code Playgroud)

但我item.StatusID在第3行收到错误说: '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'

显然这是因为StatusID存在于Status类型中,而不是List<Status>.如果我将其更改为Array.Find<Status>,则会出现错误statuses:"无法从'... List <... DataTypes.View.Status>'转换为'... DataTypes.View.Status []'.

基本上我不关心是否statuses是List,数组,动态等.我只想从Status对象中检索StatusDescr并使用匹配的StatusID.关于数据类型的任何想法?我应该使用其他东西Array.Find吗?

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

 Array.Find(statuses, item => item.StatusID == inputStatusID).StatusDescr;
Run Code Online (Sandbox Code Playgroud)

我得到一个错误Find说:方法'Array.Find(T [],Predicate)'的类型参数不能从用法中推断出来.尝试显式指定类型参数

myb*_*ame 6

var result = statuses.FirstOrDefault(x=> x.StatusID == inputStatusID);

string statusDescr = result?.StatusDescr;
Run Code Online (Sandbox Code Playgroud)

你需要这样的东西.

在这里检查dotnet小提琴