我在SQL Server数据库中有以下数据:
service_id delivery_id price_increase
---------- ----------- --------------
1 1 0.4
1 2 0.3
1 3 0.2
1 4 0.1
1 5 0
2 1 0.4
2 2 0.3
2 3 0.2
2 4 0
2 5 0
4 1 0.5
4 2 0.3
4 3 0.25
4 4 0.15
4 5 0
有些观点:
service_id
值始终具有delivery_id
值的完整补码(即,需要delivery_id
个1-5)< / LI>
service_id
值的完整补充(如上所示,service_id
3没有条目)service_id
条目数这些值将被解析为以下类层次结构:
ServicePricing
- ServiceId
- IEnumerable<DeliveryPricing>
,其中
DeliveryPricing
- DeliveryId
- PriceIncrease
从DB查询这些值然后使用C#解析它们的最简单方法是什么?我可以以相当简单但乏味的方式执行此操作,检查是否已在代码中声明service_id
等等,但有没有办法对结果进行分组,以便我可以更容易地遍历它们并有一个明确的边界来声明其中任何一个类的新实例?
例如,是否可以将同一service_id
的所有结果放入单个结果集中?
[只是为了澄清,我正在寻找一个基于SQL的建议,而不是如何在C#中解析结果集。]
答案 0 :(得分:0)
select service_id, delivery_id, price_increase
from table order by service_id, delivery_id
int? serviceID = null;
ServicePricing sp;
List<ServicePricing> sps;
while (rdr.Read())
{
if(rdr.GetInt(0) <> serviceID)
{
if(sp != null)
sps.Add(sp);
serviceID = rdr.GetInt(0);
sp = new ServicePricing(serviceID);
}
sp.DeliveryPricings.Add(new DeliveryPricing(rdr.GetInt(1), rdr.GetDecimal(2));
}
sps.Add(sp);