var datasource = (
from oi in db.t_order_items
where oi.t_orders.audit && oi.t_orders.status == t_orders.status_active && oi.t_orders.t_dly_type.dt_type == "delivery" && oi.t_orders.t_payments.Where(p => p.audit).Sum(p => p.money) >= oi.t_orders.final_amount
&& (oi.t_delivery_items.Count() == 0 || oi.nums > oi.t_delivery_items.Sum(di => di.nums))
group oi by new
{
oi.order_id,
member_id=oi.t_orders.member_id??0,
oi.t_orders.receiver_region_id,
oi.t_orders.receiver_name,
oi.t_orders.receiver_addr,
oi.t_orders.receiver_mobile,
oi.t_orders.receiver_phone,
seller_memo = oi.t_orders.seller_memo.ToString(),
buyer_memo = oi.t_orders.buyer_memo.ToString(),
oi.t_orders.receiver_zip,
oi.t_orders.t_members.members_name,
} into g
select new
{
key= g.Key.member_id+"_"+g.Key.receiver_addr,
g.Key.member_id,
g.Key.members_name,
g.Key.receiver_addr,
g.Key.receiver_mobile,
g.Key.receiver_name,
g.Key.receiver_phone,
g.Key.receiver_region_id,
g.Key.seller_memo,
g.Key.buyer_memo,
g.Key.receiver_zip,
products = g.Select(oi => new
{
oi.item_id,
oi.product_id,
oi.t_products.bn,
oi.t_products.t_goods.name,
oi.t_products.prop_str,
nums = oi.nums - (oi.t_delivery_items.Select(d => (int?)d.nums).Sum() ?? 0), //正确的
nums = oi.nums - (oi.t_delivery_items.Sum(t => t.nums) == null ? 0 : oi.t_delivery_items.Sum(t => t.nums)),//错误的
oi.t_products.t_goods.pic_url,
stores = oi.t_products.t_storage.Where(s => s.nums > 0).Select(s => new StoreInfo(s.product_id, s.store_id, s.t_store.store_name, s.store.Value, s.store.Value, s.t_store.dly_center_id)).ToArray()
}),
});