Как вернуть значения из функции с LINQ - PullRequest
0 голосов
/ 05 июля 2011

Ниже приведен пример кода, который я не могу определить тип возвращаемого значения, эта функция принадлежит классу clsExhibitorlist. Я хочу связать это с моим gridview.

публичный ??? GetExhibitorList () {

        using (DataClasses1DataContext context = new DataClasses1DataContext())
        {

            var Exhibitors = from c in context.Companies
                             join b in context.Booths on c.CoID equals b.CoID
                             join bc in context.BoothCategories
                             on b.BoothID equals bc.BoothID
                             join sp in context.SubProductCategories
                             on bc.SubProdCatID equals sp.SubProdCatID
                             join p in context.ProductCategories on
                             sp.ProdCatID equals p.ProdCatID
                             orderby c.CoID
                             select new clsExhibitorList { c.CoID, c.CompanyName,   b.FPCoName,p.ProdCatID,sp.SubProdCatID};



            if (Keyword != "")
            {
                Exhibitors = Exhibitors.Where(c => c.CompanyName.Contains(Keyword));
            }
            if (ProdCatID != "")
            {
                Exhibitors = Exhibitors.Where(c => c.ProdCatID.Equals(ProdCatID.Split(',')));
            }
            if (SubProdCatID != "")
            {
                Exhibitors = Exhibitors.Where(c => c.SubProdCatID.Equals(SubProdCatID.Split(',')));
            }
            return Exhibitors;
        }
    }

1 Ответ

2 голосов
/ 05 июля 2011

Ах, я не вижу ничего в коде, чтобы фактически вызвать запрос. Таким образом, метод возвращает дерево выражений, представляющее запрос.

Если вы добавите что-то вроде .ToList () в оператор возврата, запрос будет принудительно оценен, и тип возврата будет

Список

Вы можете найти объяснение того, что происходит здесь (отложенная оценка) в этом блоге: http://devlicio.us/blogs/derik_whittaker/archive/2008/04/07/linq-and-delayed-execution.aspx

Обратите внимание, что я не верю, что вы можете связываться с деревом выражений, вам придется добавить .ToList или .ToArray или .ToDictionary или подобное, лучшее место для его добавления будет в операторе return, чтобы как можно больше обработки будет происходить в базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...