【发布时间】:2015-08-27 09:33:32
【问题描述】:
使用以下模型:
public class Person
{
public int PersonId { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Middle Name(s)")]
public string MiddleNames { get; set; }
public string Surname { get; set; }
public string Name
{
get
{
List<string> name = new List<string>();
name.Add(this.FirstName);
name.Add(this.MiddleNames);
name.Add(this.Surname);
return String.Join(" ", name.Where(n => !String.IsNullOrEmpty(n)));
}
}
}
我想创建一个如下视图模型的PagedList:
public class PersonSearch
{
public int PersonId { get; set; }
public string Name { get; set; }
}
最有效的方法是什么?
我无法使用以下内容,因为它在 Name 上出现了预期的错误
var model = db.person.OrderBy(p => p.Surname)
.ThenBy(p => p.FirstName)
.Select(p => new PersonSearch
{
PersonId = p.PersonId,
Name = p.Name
})
.ToPagedList(page, 25);
LINQ to Entities 不支持指定的类型成员“名称”
以下内容有效,但它首先涵盖了整个人员列表:
var model = db.person.OrderBy(p => p.Surname)
.ThenBy(p => p.FirstName)
.ToList()
.Select(p => new PersonSearch
{
PersonId = p.PersonId,
Name = p.Name
})
.ToPagedList(page, 25);
以下内容不起作用,因为它删除了分页信息:
var model = db.person.OrderBy(p => p.Surname)
.ThenBy(p => p.FirstName)
.ToPagedList(page, 25);
.Select(p => new PersonSearch
{
PersonId = p.PersonId,
Name = p.Name
})
.ToPagedList(page, 25);
【问题讨论】:
-
您希望
Name成为什么? -Name = p.FirstName + " " + p.LastName? -
当这些数据项存在时,我希望它是
FirstName + " " + MiddleNames + " " + LastName。在我正在查询的数据中,其中一些数据项为 NULL。
标签: c# asp.net-mvc linq viewmodel pagedlist