我试着在这个问题上找到一个类似的问题.我想知道是否有人可以用我的代码指出这个漏洞.我有一个类型类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)'的类型参数不能从用法中推断出来.尝试显式指定类型参数
var result = statuses.FirstOrDefault(x=> x.StatusID == inputStatusID);
string statusDescr = result?.StatusDescr;
Run Code Online (Sandbox Code Playgroud)
你需要这样的东西.
在这里检查dotnet小提琴