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);
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;
} } 现在没有报错,但是在创建视图,用 强类型 模板的时候,找不到该用什么
谢谢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;
var query = data.Select(x => new { 新列名 = x.原列名 });
(2)
var query = query1.Concat(query2); //前提是必须类型一样,如果不一样,用前面那样select一下,变成一样的。
那么tolist后的model,return view(model);
在razor视图: @model List<Mail> 那么合并后的名字改怎么取? 就是List<T> ,这个T是什么名字?
那么tolist后的model,return view(model);
在razor视图: @model List<Mail> 那么合并后的名字改怎么取? 就是List<T> ,这个T是什么名字?
没有名字。你可以使用dynamic,或者定义一个和它对应的类型,然后select new 你的类型() { 列... }
{
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> 这个地方有红线,报错,该怎么写呢?谢谢
最后一行改一下:
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
{
Id = mail.Id,
LoginName = mail.Sender,
RealName = mail.RegisteredUsers.RealName,
Title = mail.Title,
Date = mail.PubDate,
IsSend = true
};
那么ToPagedList必须在最后加上 .Select(x => (object)x).ToList();
那么你就没办法直接用 . 点出成员了。
{
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;
}
}
现在没有报错,但是在创建视图,用 强类型 模板的时候,找不到该用什么
谢谢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;
}
}