帮助在亚音速中编写linq查询

时间:2010-04-15 15:05:41

标签: c# linq subsonic

我正在忙着编写一些扩展方法,到目前为止一切正常。 我有一个方法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"));
    }

1 个答案:

答案 0 :(得分:0)

Where()返回IEnumerable,而不是IQueryable,你应该在语句的末尾使用.AsQueryable():

return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city")).AsQueryable();