我有一个模型类Person
,其字段为:public string LastName { get; set; }
。我想在我的Persons
中浏览姓氏为db
或A
的所有人的Ą
表,并按名称对其进行分组。
我的查询有问题。我不知道如何选择所有这些人,或者我不知道如何选择第51至第100人
我试过了:
public ActionResult Index() {
var list = from person in db.Persons where (person.LastName.StartsWith('A'+"") ||person.LastName.StartsWith('Ą'+"") ) HOW TO SELECT AND GROUP THEM HERE
return View(list);//argument should be of type List<Person>
}
问题:如何让名字以“A”或“Ą”开头的所有人或者表中第51位到第100位的人?
修改
答案有帮助,但我无法将其转换为List
public ActionResult Index(/*char lastNameFirstLetter = 'A'*/) {
var queryResult = db.Persons.Where(person => person.LastName.StartsWith("A"))
.OrderBy(person => person.Id) // you need OrderBy before Skip
.GroupBy(person => person.LastName);
var list = queryResult.ToList();
return View(list);
}
当我进入视图Index.cshtml
时,我得到黄色的死亡屏幕:
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[System.Linq.IGrouping`2[System.String,WebApplication2.Models.Person]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[WebApplication2.Models.Person]'.
索引的模型是:
@model IEnumerable<WebApplication2.Models.Person>
答案 0 :(得分:6)
我想你想要这样的东西:
db.Persons.Where(person => person.LastName.StartsWith("A"))
.OrderBy(person => person.Id) // you need OrderBy before Skip
.Skip(50)
.Take(50)
.GroupBy(person => person.Name);