用ef查询出2个 List问题1: 在每个查询时,能不能像SQL语句那样重新命名 select oldname newname from table
问题2: 查询的结果能不能并在一起2个记录,都包含有一个时间字段,如果要按时间倒序; 能把2个查询,先何在一起,然后orderby,最后在分页ToPagedList请问该怎么做

解决方案 »

  1.   

    (1)
    var query = data.Select(x => new { 新列名 = x.原列名 });
    (2)
    var query = query1.Concat(query2); //前提是必须类型一样,如果不一样,用前面那样select一下,变成一样的。
      

  2.   


    那么tolist后的model,return view(model);   
    在razor视图: @model List<Mail>   那么合并后的名字改怎么取? 就是List<T> ,这个T是什么名字?
      

  3.   


    那么tolist后的model,return view(model);   
    在razor视图: @model List<Mail>   那么合并后的名字改怎么取? 就是List<T> ,这个T是什么名字?
    没有名字。你可以使用dynamic,或者定义一个和它对应的类型,然后select new 你的类型() { 列... }
      

  4.   

            public static void deletbox()
            {
                using (var db = new WEBVODEntities())
                {
                    //var qry1 = db.Mail.Where(a => a.Status == Constants.Mail_Delete && a.Sender == "");                string strLoginName = CurrentProject.GetCurrentUser().LoginName;                var qry1 = from mail in db.Mail
                               where mail.Status == Constants.Mail_Delete && mail.Sender == strLoginName
                               select new
                               {
                                   Id = mail.Id,
                                   LoginName = mail.Sender,
                                   RealName = mail.RegisteredUsers.RealName,
                                   Title = mail.Title,
                                   Date = mail.PubDate,
                                   IsSend = true
                               };                var qry2 = from mail in db.Inbox
                               where mail.status == Constants.Mail_Delete && mail.LoginName == strLoginName
                               select new
                               {
                                   Id = -mail.Id,
                                   LoginName = mail.LoginName,
                                   RealName = mail.RegisteredUsers.RealName,
                                   Title = mail.Mail.Title,
                                   Date = mail.DateReceive,
                                   IsSend = false
                               };
                    var qry = qry1.Concat(qry2);                PagedList<object> = qry.OrderByDescending(a => a.Date).ToPagedList(pageIndex,10);
                
                }
            }
    PagedList<object> 这个地方有红线,报错,该怎么写呢?谢谢
      

  5.   


    最后一行改一下:
    PagedList<object> list = qry.OrderByDescending(a => a.Date).ToPagedList(pageIndex,10);报如下错误:错误 59 无法将类型“Webdiyer.WebControls.Mvc.PagedList<AnonymousType#1>”隐式转换为“Webdiyer.WebControls.Mvc.PagedList<object>” F:\win2008iis\BYVOD\Models\MailBll.cs 195 42 BYVOD
      

  6.   

    你的两个查询结果都是用的匿名类,怎么能Contact连接的起来? select new  YourClassName
                               {
                                   Id = mail.Id,
                                   LoginName = mail.Sender,
                                   RealName = mail.RegisteredUsers.RealName,
                                   Title = mail.Title,
                                   Date = mail.PubDate,
                                   IsSend = true
                               };
      

  7.   

    我已经说了,你必须定义这么一个类。不能用匿名类。如果你要返回 List<object>
    那么ToPagedList必须在最后加上 .Select(x => (object)x).ToList();
    那么你就没办法直接用 . 点出成员了。
      

  8.   

            public static PagedList<Object> Dustbin(int pageIndex)
            {
                using (var db = new WEBVODEntities())
                {
                    //var qry1 = db.Mail.Where(a => a.Status == Constants.Mail_Delete && a.Sender == "");                string strLoginName = CurrentProject.GetCurrentUser().LoginName;                var qry1 = from mail in db.Mail
                               where mail.Status == Constants.Mail_Delete && mail.Sender == strLoginName
                               select new
                               {
                                   Id = mail.Id,
                                   LoginName = mail.Sender,
                                   RealName = mail.RegisteredUsers.RealName,
                                   Title = mail.Title,
                                   Date = mail.PubDate,
                                   IsSend = true
                               };                var qry2 = from mail in db.Inbox
                               where mail.status == Constants.Mail_Delete && mail.LoginName == strLoginName
                               select new
                               {
                                   Id = -mail.Id,
                                   LoginName = mail.LoginName,
                                   RealName = mail.RegisteredUsers.RealName,
                                   Title = mail.Mail.Title,
                                   Date = mail.DateReceive,
                                   IsSend = false
                               };
                    var qry = qry1.Concat(qry2);                PagedList<Object> list = qry.OrderByDescending(a => a.Date).ToPagedList<Object>(pageIndex, 10);                return list;
                
                }
            }
    现在没有报错,但是在创建视图,用 强类型 模板的时候,找不到该用什么
      

  9.   


    谢谢caozhy、q107770540 的热心帮助,可以运行了
    新建了一个类
        /// <summary>
        /// 邮件-垃圾箱
        /// </summary>
        public class Dustbin
        {
            public int Id ;
            public string LoginName;
            public string RealName;
            public string Title;
            public DateTime? Date;
            public bool IsSend;                 
        }
              public static PagedList<Dustbin> Dustbin(int pageIndex)
            {
                using (var db = new WEBVODEntities())
                {
                    //var qry1 = db.Mail.Where(a => a.Status == Constants.Mail_Delete && a.Sender == "");                string strLoginName = CurrentProject.GetCurrentUser().LoginName;                var qry1 =  from mail in db.Mail
                                where mail.Status == Constants.Mail_Delete && mail.Sender == strLoginName
                                select new Dustbin
                                {
                                    Id = mail.Id,
                                    LoginName = mail.Sender,
                                    RealName = mail.RegisteredUsers.RealName,
                                    Title = mail.Title,
                                    Date = mail.PubDate,
                                    IsSend = true
                                };                var qry2 = from mail in db.Inbox
                               where mail.status == Constants.Mail_Delete && mail.LoginName == strLoginName
                               select new Dustbin
                               {
                                   Id = -mail.Id,
                                   LoginName = mail.LoginName,
                                   RealName = mail.RegisteredUsers.RealName,
                                   Title = mail.Mail.Title,
                                   Date = mail.DateReceive,
                                   IsSend = false
                               };
                    var qry = qry1.Concat(qry2);                PagedList<Dustbin> list = qry.OrderByDescending(a => a.Date).ToPagedList(pageIndex, 10);                return list;
                
                }
            }