我正在创建我的api以从任何城市返回cod_postal来制作一些链接的下拉组合。
我在db中意识到一些cod_postal是重复的。所以我尝试使用GroupBy
在我找到使用列表的示例之前出现了一些错误。 Sample
所以我决定首先创建一个List<dto>
然后执行分组,并在代码显示时解决我的重复问题。
问题是为什么我需要.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
收到以下错误
Elpétodo'First'ssólosepuede usarcomoperaracióndeconsulta final。考虑到la posibilidad de utilizar en su lugarelmétodo'FirstOrDefault'enesta instancia。这就像'First'方法只能用作最终操作,考虑使用'FirstOrDefault'代替。
但'FirstOrDefault'在这里既不起作用
答案 0 :(得分:4)
我收到错误
这不是一个非常有用的问题描述。我可以猜到这个问题:ToList
将查询从LINQ转换为SQL或EF(你没有说过你正在使用的ORM)到LINQ to Objects。您的LINQ提供程序可能不喜欢该特定模式,无法翻译它。 LINQ to Objects可以在客户端上执行任何操作。
答案 1 :(得分:0)
使用groupby的Intead你应该使用不同的