Linq查询姓氏以字母开头的人' A'

时间:2014-09-11 19:38:37

标签: c# sql asp.net-mvc linq

我有一个模型类Person,其字段为:public string LastName { get; set; }。我想在我的Persons中浏览姓氏为dbA的所有人的Ą表,并按名称对其进行分组。

我的查询有问题。我不知道如何选择所有这些人,或者我不知道如何选择第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>

1 个答案:

答案 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);