为什么在GroupBy之前我需要ToList
本文关键字:ToList GroupBy 为什么 | 更新日期: 2023-09-27 17:53:30
我正在创建我的api,从任何城市返回cod_postal,以制作一些链接的下拉组合。
我意识到在db中一些cod_postal是重复的。所以我试着用GroupBy
得到一些错误,直到我发现一个样本与列表工作。示例
所以我决定首先创建一个List<dto>
,然后执行组by和,解决我的重复问题,如代码所示。
问题是为什么我需要.ToList()
加入DTO和GroupBy步骤?
public class cod_postalDTO
{
public int cod_postal_id { get; set; }
public string name { get; set; }
}
public class codPostalController : ApiController
{
private dbEntities db = new dbEntities ();
public List<cod_postalDTO> Getcod_postal(int city_id)
{
List<cod_postalDTO> l_cod_postal = db.cod_postal
.Where(c => c.city_id == city_id)
.Select(c => new cod_postalDTO
{
cod_postal_id = c.cod_postal_id,
name = c.name
})
.OrderBy(o => o.name)
.ToList() // <== why i need this line?
.GroupBy(c => c.name)
.Select(grp => grp.First())
.ToList();
return l_cod_postal;
}
如果我不包括中间的.ToList
得到以下错误
El msamutodo 'First' sólo se puede usar como operación de consulta final。请考虑在实例中使用sugar - el - msamuys来执行'FirstOrDefault'的可能性。
这有点像'First'方法只能用作最后操作,考虑使用'FirstOrDefault'来代替。
但是'FirstOrDefault'在这里也不起作用
我得到一个错误
这不是一个很有用的问题描述。我可以猜到问题:ToList
转换查询从LINQ到SQL或EF(你没有说你正在使用什么ORM)到LINQ到对象。您的LINQ提供程序可能不喜欢那个特定的模式并且无法转换它。LINQ to Objects可以执行任何东西,但它只在客户端执行。
应该使用distinct