无法将方法组'FirstOrDefault'转换为非委托类型

3
我正在检索一个列表并需要获取特定记录。我尝试了几种不同的方法,但每种方法都会产生错误。使用以下代码时我收到上述错误:
List<DashboardModel> dashboardData = CompanyClient.GetContractorRankingByMajorIDAndContractorID(majorId, contractorId);
DashboardModel SSQScore = new DashboardModel();
SSQScore = dashboardData.Where(x=>x.ModuleInstanceID == 1).FirstOrDefault;

方法(GetContractor...)返回了列表。
非常感谢您的帮助!

2
FirstOrDefault();。您忘记了括号。 - M.kazem Akhgary
2个回答

5

This

SSQScore = dashboardData.Where(x=>x.ModuleInstanceID == 1).FirstOrDefault;

应该像这样编写

SSQScore = dashboardData.FirstOrDefault(x=>x.ModuleInstanceID == 1);

或者您可以通过在 FirstOrDefault 之后使用 () 来更正您的语句。
SSQScore = dashboardData.Where(x=>x.ModuleInstanceID == 1).FirstOrDefault();

2
SSQScore = dashboardData.Where(x => x.ModuleInstanceID == 1).FirstOrDefault;
你漏掉了括号,这会告诉编译器“使用这个方法”,而不是调用这个方法。将其改为:
SSQScore = dashboardData.Where(x => x.ModuleInstanceID == 1).FirstOrDefault();

另外,您不需要执行Where(...).FirstOrDefault(),后者可以接受一个谓词表达式。这等效于:

SSQScore = dashboardData.FirstOrDefault(x => x.ModuleInstanceID == 1);

1
@M.kazemAkhgary,可能我们同时写了它;)这太明显了:) - Abel
1
你们俩太棒了!感谢你们的帮助。我永远也想不到缺少了括号。 - Rani Radcliff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接