C# 用LINQ生成矩阵表的困难
我正在尝试使用以下模型使用LINQ查询矩阵表:C# 用LINQ生成矩阵表的困难,c#,sql,asp.net-mvc,linq,linq-to-sql,C#,Sql,Asp.net Mvc,Linq,Linq To Sql,我正在尝试使用以下模型使用LINQ查询矩阵表: public class Order { public int Id { get; set; } public DateTime DateCreated { get; set; } public DateTime? DateModified { get; set; } public virtual ICollection<OrderLine> OrderLines { get; set; } } pub
public class Order
{
public int Id { get; set; }
public DateTime DateCreated { get; set; }
public DateTime? DateModified { get; set; }
public virtual ICollection<OrderLine> OrderLines { get; set; }
}
public class OrderLine
{
public int Id { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public int OrderId { get; set; }
public int ProductId { get; set; }
public virtual Order Order { get; set; }
public virtual Product Product { get; set; }
}
public class Product
{
public int Id { get; set; }
public string ProductName { get; set; }
public string Sku { get; set; }
public decimal UnitPrice { get; set; }
public virtual ICollection<OrderLine> OrderLines { get; set; }
}
这“有点”有效,但我需要解决一些问题
三月份我有10种产品。
四月份,我又创建了两个。
8月份又有3个
因此,对于1月至3月,我希望看到我在4月和8月创建的产品,销售数量为0。目前,这些产品被排除在数据收集之外
这使得在我看来很难重复。我希望收集的数据反映所有产品,如果它们在2月份不存在,则只显示0
我用于查询的ViewModels:
public class ReportingMatrix
{
public int Month { get; set; }
public List<ReportingMatrixData> MatrixData { get; set; }
}
public class ReportingMatrixData
{
public string ProductName { get; set; }
public int Cases { get; set; }
}
公共类报告矩阵
{
公共整数月{get;set;}
公共列表矩阵扩展数据{get;set;}
}
公共类ReportingMatrixData
{
公共字符串ProductName{get;set;}
公共int Cases{get;set;}
}
问题
我不认为最好的方法是尝试将其仅放在一个Linq查询中 只需创建单独的查询来选择不同的月份和产品,然后创建一个linq查询,对给定产品和月份的订单求和。允许0作为默认结果值 这也将更容易解决2。三,。 其他提示,要获取所有月份名称,请执行以下操作:
someDateTime.Month.ToString("MMMM")
或者使用以下文件中的第一个代码段:
其他建议:研究其他连接类型,如完全连接、外部连接
someDateTime.Month.ToString("MMMM")