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

Posted

技术标签:

【中文标题】无法将方法组“FirstOrDefault”转换为非委托类型【英文标题】:Cannot convert method group 'FirstOrDefault' to non-delegate type 【发布时间】:2015-12-24 06:04:09 【问题描述】:

我正在检索一个列表并需要获取特定记录。我尝试过几种不同的方法,但每种方法都会产生错误。我使用以下代码收到上述错误:

List<DashboardModel> dashboardData = CompanyClient.GetContractorRankingByMajorIDAndContractorID(majorId, contractorId);
DashboardModel SSQScore = new DashboardModel();
SSQScore = dashboardData.Where(x=>x.ModuleInstanceID == 1).FirstOrDefault;

List 由方法 (GetContractor...) 返回。

非常感谢任何帮助!

【问题讨论】:

FirstOrDefault();。你忘了括号 【参考方案1】:

这个

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);

【讨论】:

@M.kazemAkhgary,可能,我想我们是同时写的;)。这太明显了:) 你们两个太棒了!谢谢您的帮助。我永远也想不通缺少的 ()。

以上是关于无法将方法组“FirstOrDefault”转换为非委托类型的主要内容,如果未能解决你的问题,请参考以下文章

Int 到字符串:无法从“方法组”转换为“字符串”[关闭]

将多个条件传递给 LINQ FirstOrDefault 方法

C#:如何将对象强制转换为其实现的接口

js字符串每个数组前面数字转换为多少个数组

涉及 Max() 的 SQL 到 LINQ 转换

将 .net 4.0 语法 OfType 转换为 .net 3.5