【发布时间】:2016-11-25 16:04:55
【问题描述】:
我想知道为什么这两个 LINQ 查询不同,或者为什么一个有效而另一个无效?显然编译器说它们是不同的,但我似乎无法找出原因?
我希望第一个查询可以工作,但无论我做什么都行不通。
下面的 LINQ 查询给了我一个错误,
不能隐式转换类型“int?”到 'System.Collections.Generic.IEnumerable'
public static IEnumerable<int?> GetTenantFacilityCosts(int? code, DateTime date, int number)
{
return DataContext.Facility_Cost_TBLs.
Where(p => p.Tenant_Code == code &&
p.Code_Date == number &&
p.Date_Year == date.Year &&
p.Date_Month == date.Month).
FirstOrDefault().Tenant_Portion;
}
但是下面的这个查询得到了我想要得到的int 值并且没有抛出错误。
int? facilityCost =
DataContext.Facility_Cost_TBLs.
Where(p => p.Tenant_Code == selectedTenant.Tenant_Code &&
p.Code_Date == 10 &&
p.Date_Year == date.Year &&
p.Date_Month == date.Month).
FirstOrDefault().Tenant_Portion;
为什么这两个查询不同,如何让第一个查询正常工作?
【问题讨论】:
-
该错误告诉您,您正在尝试在应该返回
IEnumerable<int?>的方法中返回int?。 -
将
return更改为yield return:)