当前位置: 首页 > 编程语言 > C#

Groupby、Count和Lambda表达式共享

时间:2023-04-11 10:40:00 C#

Groupby、Count和Lambda表达式我正在尝试翻译以下查询:SELECTSTATE,COUNT(*)FROMMYTABLEGROUPBYSTATE;变成lambda表达式。我正在使用C#和EntityFramework,但我似乎无法让它工作。这是我目前存储库中的内容:publicIEnumerablePorcentajeState(Guidid){return_context.Sates.Where(a=>a.Id==id).GroupBy(a=>a.State).Select(n=>新的{n.StateId,n.Count()});}当然它没有编译,我在谷歌搜索2小时后迷路了。请你帮助我好吗?提前致谢这里有两个问题:GroupBy的结果将是IEnumerable>类型的可枚举。IGrouping接口只有一个您可以访问的属性,Key是您在GroupBy表达式中指定的键,并实现IEnumerable,因此您可以对结果执行其他Linq操作。如果无法从属性或字段表达式中推断出匿名类型,则需要为匿名类型指定属性名称。在本例中,您在IGrouping上调用Count,因此您需要为该属性指定一个名称。试试这个:publicIEnumerablePorcentajeState(Guidid){return_context.Sates.Where(a=>a.Id==id).GroupBy(a=>a.StateId).Select(g=>new{g.Key,计数=g.Count()});}等效的查询语法是publicIEnumerablePorcentajeState(Guidid){returnfromain_context.Sateswherea.Id==idgroupabya.StateIdintogselectnew{a.Key,Count=g.Count()};在任何一种情况下,如果您希望第一个属性被命名为StateId而不是Key,只需将其更改为新的{StateId=g.Key,Count=g.Count()}这很好publicIEnumerablePorcentajeState(Guidid){返回_context.Sates.Where(a=>a.Id==id).GroupBy(a=>a.StateId)。Select(g=>new{g.Key,Count=g.Count()});但是试试这个。以上就是C#学习教程分享的全部内容:Groupby、Count和LambdaExpression。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——publicIEnumerablePorcentajeState(Guidid){return_context.Sates.Where(a=>a.Id==id).GroupBy(a=>a.StateId).Select(g=>new{g.Key.StateId,Count=g.Count()});}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢