我正在忙着编写一些扩展方法,到目前为止一切正常。 我有一个方法getCities接受IQueryable qry并且应该返回qry中具有区域类型city的所有区域。
我尝试使用linq来做,但放弃了,我正在使用for循环。 它有效,但它让我烦恼。我已经在底部评论了我提出的linq语句,但这不起作用。
for循环正确返回记录,我注释掉的linq查询永远不会返回任何内容。
一个区域只能有1个Region_Type,但是subsonic使它成为一个集合,这就是为什么我使用item.Region_Types.First()来获取区域Region_Type。
public static IQueryable<Region> getCities(this IQueryable<Region> qry)
{
List<Region> returnCol = new List<Region>();
foreach (var item in qry)
{
if (item.Region_Types.First().Name.ToLower().Trim().Equals("city"))
{
returnCol.Add(item);
}
}
return returnCol.AsQueryable();
//return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city"));
}
答案 0 :(得分:0)
Where()返回IEnumerable,而不是IQueryable,你应该在语句的末尾使用.AsQueryable():
return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city")).AsQueryable();