linq to sql -> присоединиться - PullRequest
1 голос
/ 23 марта 2010

SQL-запрос:

SELECT     ArticleCategories.Title AS Category, Articles.Title, Articles.[Content], Articles.Date
FROM         ArticleCategories INNER JOIN
                   Articles ON ArticleCategories.CategoryID = Articles.CategoryID

Хранилище объектов:

public class ArticleDisplay
    {
        public int CategoryID;
        public string CategoryTitle;

        public int ArticleID;
        public string ArticleTitle;
        //public string ArticleDate;
        public string ArticleContent;
    }    


public class ArticleRepository
    {
        private DB db = new DB();
        //
        // Query Methods
        public IQueryable<ArticleDisplay> FindAllArticles()
        {
            var result =   from category in db.ArticleCategories
                           join article in db.Articles on category.CategoryID equals article.CategoryID
                           select new
                           {
                               CategoryID = category.CategoryID,
                               CategoryTitle = category.Title,

                               ArticleID = article.ArticleID,
                               ArticleTitle = article.Title,
                               //ArticleDate = article.Date,
                               ArticleContent = article.Content
                           };

            return result;

        }
        ....
    }

И, наконец, я получаю эту ошибку:

Ошибка 1 Не удается неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Linq.IQueryable. Явное преобразование существует (вы пропустили актерский состав?) C: \ Documents and Настройки \ или \ Мои документы \ Визуальные студия 2008 \ Проекты \ CMS \ CMS \ Models \ ArticleRepository.cs 29 20 CMS

Есть идеи, что я сделал не так?

Спасибо
Ile

Ответы [ 2 ]

2 голосов
/ 23 марта 2010

Ваш метод имеет тип возврата IQueryable

, но ваш запрос LINQ не возвращает статьи.Вместо этого он пытается вернуть анонимный тип, состоящий из свойств как категории, так и статьи.Вы можете создать класс для хранения этой комбинации свойств и изменить сигнатуру метода для использования этого класса.
1 голос
/ 23 марта 2010

Как сказал Адам, если вы не хотите возвращать полный класс статьи, вам нужно вернуть свой собственный класс.

public IQueryable<ArticleDisplay> FindAllArticles()
    {
        var result =   from category in db.ArticleCategories
                       join article in db.Articles on category.CategoryID equals article.CategoryID
                       select new ArticleDisplay() //specify your new class
                       {
                           CategoryID = category.CategoryID,
                           CategoryTitle = category.Title,
                           ....
                       };

        return result;

    }

Ваш обновленный код по-прежнему возвращает анонимный класс ....

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