我正在尝试翻译以下查询:
SELECT STATE, COUNT(*)
FROM MYTABLE
GROUP BY STATE;
进入lambda表达式。我正在使用C#和EntityFramework,但似乎我无法使其工作。这是我到目前为止在我的存储库中的内容:
public IEnumerable<object> PorcentajeState(Guid id)
{
return _context.Sates.Where(a => a.Id == id)
.GroupBy(a => a.State)
.Select(n => new { n.StateId , n.Count() });
}
当然它没有编译,我在谷歌搜索2小时后迷路了。你能帮我吗?
提前致谢
答案 0 :(得分:45)
这里有两个问题:
GroupBy
的结果将是IEnumerable<IGrouping<TKey, TSource>>
类型的可枚举。 IGrouping
接口只有一个您可以访问的属性,Key
这是您在GroupBy
表达式中指定的密钥,并实现IEnumerable<T>
,因此您可以执行其他Linq操作结果。 Count
上调用IGrouping
,因此您需要为该属性指定名称。试试这个:
public IEnumerable<object> PorcentajeState(Guid id)
{
return _context.Sates.Where(a => a.Id == id)
.GroupBy(a => a.StateId)
.Select(g => new { g.Key, Count = g.Count() });
}
查询语法中的等价物是
public IEnumerable<object> PorcentajeState(Guid id)
{
return from a in _context.Sates
where a.Id == id
group a by a.StateId into g
select new { a.Key, Count = g.Count() };
}
在任何一种情况下,如果您希望将第一个属性命名为StateId
而不是Key
,只需将其更改为
new { StateId = g.Key, Count = g.Count() }
答案 1 :(得分:3)
这个很好
mach_msg_type_number_t info_count = VM_REGION_BASIC_INFO_COUNT_64;
但试试这个。
sudo ln /usr/lib64/atlas/libcblas.so.3.0 /usr/lib64/libcblas.so
sudo ln -s /usr/lib64/atlas/libatlas.so.3.0 /usr/lib64/libatlas.so