Ali Paeizi
Ali Paeizi

Reputation: 69

How to debug query in c# program?

I want to write query more efficient.

I do not want before the end of the query, the list of data to extract.

    var UserTimeLineNews = (from l in _newsService.NewsQuery()
                                where l.UserId == UserId && l.IsActive == true
                                orderby l.CreateDate descending
                                select new UserTimeLine
                                {
                                    EventDate = l.CreateDate,
                                    CreateDate = l.CreateDate,
                                    NewsId = l.NewsId,
                                    TimeLineType = TimeLineType.CreateNews,
                                    Title = l.Title,
                                    Abstract = l.NewsAbstract,
                                    CommentCount = l.CommentCount,
                                    LikeCount = l.LikeCount,
                                    ViewsCount = l.ViewsCount,
                                    Storyteller = l.Storyteller
                                }).AsQueryable();//Take(NumberOfNews).ToList();

        var UserTimeLineLikeNews = (from l in _likeNewsService.LikeNewsQueryable()
                                    where l.UserId == UserId
                                    orderby l.CreateDate descending
                                    select new UserTimeLine
                                    {
                                        EventDate = l.CreateDate,
                                        CreateDate = l.CreateDate,
                                        NewsId = l.NewsId,
                                        TimeLineType = TimeLineType.LikeNews,
                                        Title = l.News.Title,
                                        Abstract = l.News.NewsAbstract,
                                        CommentCount = l.News.CommentCount,
                                        LikeCount = l.News.LikeCount,
                                        ViewsCount = l.News.ViewsCount,
                                        Storyteller = l.News.Storyteller
                                    }).AsQueryable();//Take(NumberOfNews).ToList();

        var UserTimeLineComments = (from l in _commentService.CommentQueryable()
                                    where l.UserId == UserId && l.IsActive == true
                                    orderby l.CreateDate descending
                                    select new UserTimeLine
                                    {
                                        EventDate = l.CreateDate,
                                        CreateDate = l.CreateDate,
                                        NewsId = l.NewsId,
                                        TimeLineType = TimeLineType.Comment,
                                        Title = l.News.Title,
                                        Abstract = l.News.NewsAbstract,
                                        CommentContent = l.Content,
                                        CommentCount = l.News.CommentCount,
                                        LikeCount = l.News.LikeCount,
                                        ViewsCount = l.News.ViewsCount,
                                        Storyteller = l.News.Storyteller
                                    }).AsQueryable();//Take(NumberOfNews).ToList();

        var item = (UserTimeLineNews
            .Union(UserTimeLineLikeNews)
            .Union(UserTimeLineComments))
            .OrderByDescending(e => e.EventDate)
            .Distinct()
            .Take(NumberOfNews)
            .ToList();

After running the following error appears

Error: The type 'UserTimeLine' appears in two structurally incompatible initializations within a single LINQ to Entities query. A type can be initialized in two places in the same query, but only if the same properties are set in both places and those properties are set in the same order.

Upvotes: 0

Views: 139

Answers (1)

Steve Ruble
Steve Ruble

Reputation: 3895

The first two queries don't initialize the CommentContent property. Add that to the initializer in the first two queries (or remove it in the last query) and the final query should work.

Upvotes: 1

Related Questions