Помогите написать запрос linq в дозвуковой - PullRequest
0 голосов
/ 15 апреля 2010

Я занят написанием некоторых методов расширения и пока все шло хорошо. У меня есть метод getCities, который принимает IQueryable qry и должен вернуть все регионы в qry, которые имеют тип региона города.

Я пытался использовать linq для этого, но сдался и сейчас использую цикл for. Это работает, но это беспокоит меня. Внизу я прокомментировал выдвинутое мной заявление linq, которое не работает.

Цикл for возвращает записи правильно, закомментированный мной запрос linq никогда ничего не возвращает.

Регион может иметь только 1 Region_Type, но subsonic делает его коллекцией, поэтому для получения регионов Region_Type я использую item.Region_Types.First ().

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 голосов
/ 15 апреля 2010

Если () возвращает IEnumerable, а не IQueryable, вы должны использовать .AsQueryable () в конце оператора:

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