我有以下Product
课程:
public class Product
{
public string Name { get; set; }
public float Price { get; set; }
public int? CategoryId { get; set; }
}
Product
现在我必须计算每个人有多少个CategoryId
并将它们放在一个Dictionary<int, int>
. 所以:
IQueryable<Product> products = _productServices.GetAll(); //return IQueryable<Product>
Dictionary<int, int> productDict = products.ToList()
.GroupBy(p => p.CategoryId)
.ToDictionary(pgroup => pgroup.key, pgroup => pgroup.Count());
问题是我Dictionary<int?, int>
从ToDictionary()
. 即使我通过放置来预先过滤空值,Where(p => p.CategoryId != null)
我也不会将类型更改CategoryId
为int
。我还尝试创建匿名类型:
products.ToList()
.GroupBy(p => p.CategoryId)
.Select(p => new { p.key ?? -1, p.Count() }
.ToDictionary(pgroup => pgroup.key, pgroup => pgroup);
但它给出了一个Invalid anonymous type member declarator
错误。我也试图删除ToList()
但没有运气。我用谷歌搜索了一下,没有发现有人遇到这个问题,尽管我认为这种情况可能很常见,尤其是在使用EF和databases时。有人有解决方案吗?