【问题标题】:How to debug query in c# program?如何在 C# 程序中调试查询?
【发布时间】:2013-12-26 12:16:26
【问题描述】:

我想写查询更有效率。

我不希望在查询结束之前提取数据列表。

    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();

运行后出现如下错误

错误: 'UserTimeLine' 类型出现在单个 LINQ to Entities 查询中的两个结构不兼容的初始化中。 一个类型可以在同一个查询的两个地方初始化,但前提是在两个地方都设置了相同的属性,并且这些属性的设置顺序相同。

【问题讨论】:

  • 您能否发布您的实际代码,而不仅仅是伪代码?
  • 原代码的写法完全一样。只有 x 的 y 和 z 是相关的
  • C# 中的类肯定不会像你所拥有的那样声明。

标签: c# linq entity-framework


【解决方案1】:

前两个查询没有初始化CommentContent 属性。在前两个查询中将其添加到初始化程序(或在最后一个查询中将其删除),最终查询应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多