C# Linq向姓氏以字母“A”开头的人发出的查询

C# Linq向姓氏以字母“A”开头的人发出的查询,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,我有一个模型类Person,它的字段是:公共字符串LastName{get;set;}。我想在我的数据库中浏览所有姓氏第一个字母为A或Ą的人的表格,并按姓名对他们进行分组 我有一个疑问。我不知道如何选择所有这些人,或者我也不知道如何选择第51位到第100位 我试过这个: public ActionResult Index() { var list = from person in db.Persons where (person.LastName.StartsWith('A'+"") |

我有一个模型类Person,它的字段是:公共字符串LastName{get;set;}。我想在我的数据库中浏览所有姓氏第一个字母为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>    
}
当我转到view 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>

我想你想要这样的东西:

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

我想你想要这样的东西:

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

您可能需要OrderBy、Skip和Take。它们用于分页将@model IEnumerable更改为@model list您可能需要OrderBy、Skip和Take。它们用于分页将@model IEnumerable更改为@model ListNo,no,please,very,no lambda表达式。我只是想问linq的问题。这是linq的问题query@Yoda,没有lambdas你怎么做linq?我的意思是,你可以创建自己的函数并调用它们,但这需要更多的努力。我在OP中发布的查询风格是什么?下一次,我将告诉你如何问得更好。@Yoda你需要删除GroupBy然后不,不,请非常不要lambda表达式。我只是想问linq的问题。这是linq的问题query@Yoda,没有lambdas你怎么做linq?我的意思是,你可以创建自己的函数并调用它们,但这需要更多的努力。我在OP中发布的查询风格是什么?下一次我会问你如何做得更好。@Yoda你需要在那之前删除GroupBy