C#LINQ GroupBy空值

C#LINQ GroupBy空值,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有一个枚举 public enum Status { New, InProgress, Processed, InComplete}; 我正在用LINQ做一个groupby,但是在数据库中。我的问题是,我有表示新状态的空值。那么是否可以将我的空值更新为0?然后我的groupby将返回新状态的计数 我的问题是: var results = DbContext.Orders .Where(i => i.Id== Id)

我有一个枚举

public enum Status { New, InProgress, Processed, InComplete};
我正在用LINQ做一个groupby,但是在数据库中。我的问题是,我有表示新状态的空值。那么是否可以将我的空值更新为0?然后我的groupby将返回新状态的计数

我的问题是:

var results = DbContext.Orders
                       .Where(i => i.Id== Id)
                       .GroupBy(row => new { row.Status})
                       .Select(g => new Stats()
                       {
                           Status = g.Key.Status,
                           Count = g.Count()
                       }).ToList();

GroupBy
中的
row.Status
上使用空合并运算符,如
row.Status??0

分组对象中的
行.Status
上使用空合并运算符,如在
行.Status中一样??0

它可能看起来像这样:

var results = DbContext.Orders
                       .Where(i => i.Id == Id)
                       .GroupBy(row => row.Status ?? 0) //why are you creating an anonymous class here?
                       .Select(g => new Stats()
                       {
                           Status = (Status)g.Key, //change it like that if it's the enum type
                           Count = g.Count()
                       }).ToList();

可能是这样的:

var results = DbContext.Orders
                       .Where(i => i.Id == Id)
                       .GroupBy(row => row.Status ?? 0) //why are you creating an anonymous class here?
                       .Select(g => new Stats()
                       {
                           Status = (Status)g.Key, //change it like that if it's the enum type
                           Count = g.Count()
                       }).ToList();

您可以在执行上述语句之前,甚至在将其从数据库拉到C#时,将第行中的null更新为0object@Rex如何更新该值?那里的
null
是什么<代码>行.状态
不能为空,因为它是枚举值-值类型。如果它是一个
int?
,您通常无法将它分配给
Status类型的字段
@JakubDąbek,它不应该在那里。但是正在尝试解决方法。
row.Where(x=>x.Stats==null.ToList().ForEach(i=>i.Stats=0)您可以在执行上述语句之前,甚至在将其从数据库拉到C#时,将第行中的null更新为0object@Rex如何更新该值?那里的
null
是什么<代码>行.状态
不能为空,因为它是枚举值-值类型。如果它是一个
int?
,您通常无法将它分配给
Status类型的字段
@JakubDąbek,它不应该在那里。但是正在尝试解决方法。
row.Where(x=>x.Stats==null.ToList().ForEach(i=>i.Stats=0)您的意思是:.GroupBy(row=>new{row.ProcessStatus==null?0:row.ProcessStatus})。此代码不起作用。你能告诉我如何更新我的代码吗?谢谢。我做错了。只需要将我的group by更新为:.GroupBy(row=>new{Status=row.Status??0})您的意思是:.GroupBy(row=>new{row.ProcessStatus==null?0:row.ProcessStatus})。此代码不起作用。你能告诉我如何更新我的代码吗?谢谢。我做错了。只需将我的GroupBy更新为:.GroupBy(row=>new{Status=row.Status±0})感谢您的查询。感谢您的查询。