Linq 的 Case
来源:互联网 发布:淘宝主图要求规范2017 编辑:程序博客网 时间:2024/06/09 20:25
一共2中方法解决 ,第一种是 用一个c#方法,第二种是直接LINQ语句
————————————————————————————————————————
BLL层语句
public IQueryable<HotelOrderInfoModel> GetAllOrderInfo(long? companyid, long? CID, DateTime? CheckTime)
{
//List<CompanyHotel> lst = GetHotelID(companyid);
OrderDataClasses od = new OrderDataClasses();
var list = od.CompanyHotel.Where(o => o.CompanyID == companyid);
IQueryable<HotelOrderInfoModel> info = from h in od.Htel_OrderInfo
//from p in od.Htel_OrderDetail
from d in od.Hotel
from l in list
where h.HotelID == l.HotelID
//where h.OrderCode == p.OrderCode
where h.CreateDate >= CheckTime && h.IsCheckOut == 0
where d.ID == l.HotelID
select new HotelOrderInfoModel
{
HotelNameCN = d.NameCN,
CheckOut = h.Checkout,
OrderState = h.OrderState == null ? -1 : h.OrderState,
RoomNameCN = h.RoomNameCN,
SalePrice = (from p in od.Htel_OrderDetail
where p.OrderCode == h.OrderCode
select
p.SalePrice).Sum(),
Commission = (from pp in od.Htel_OrderDetail
where pp.OrderCode == h.OrderCode
select new OrderCommission
{
OCommission = GetCommission(pp.CheckOutType, pp.SalePrice, pp.CommissionValue)
}
),
CompanyIdList = (from hh in od.Htel_OrderInfo
where h.HotelID == l.HotelID
select
h.CompanyID).ToList()
};
private int? GetCommission(int? ctype,int? saleprice ,int? cvalue)
{
int? result = 0;
switch (ctype)
{
case 84:
result = (saleprice == null ? 0 : saleprice) - (cvalue == null ? 0 : cvalue);
break;
case 85:
result = (cvalue == null ? 0 : cvalue);
break;
case 86:
result = (saleprice == null ? 0 : saleprice) * (cvalue == null ? 0 : cvalue) / 100;
break;
}
return result;
}
public string SumOrderCommission(IQueryable<OrderCommission> ordercommission)
{
int? n =0;
foreach (var ob in ordercommission)
{
n += ob.OCommission;
}
return n.ToString();
}
-----------------------------------------------------------------------------------------------------------------------
MODEL 层
------------------------------------------------------------------------------------------------------------------------
前台页面调用
<%foreach (var item in Model)
{ %>
<tr>
<td>
<%=Html.Encode(item.HotelNameCN) %>
</td>
<td>
<%=Html.Encode(item.RoomNameCN) %>
</td>
<td>
<%=Html.Encode(item.SalePrice) %>
</td>
<td>
<%= mb.SumOrderCommission(item.Commission)%>
</td>
<td>5
</td>
<td>
<%=Html.Encode(item.CheckOut) %>
</td>
</tr>
<%} %>
——————————————————————————————
另一种方法:
LINQ 语句是这样的:
var sell = from s in db.Sell
group s by new { s.SellStore, s.GoodID } into sInto
select new
{
StoreID = sInto.Key.SellStore,
GoodID = sInto.Key.GoodID,
SellNum = sInto.Sum(item => NumberConverter(item.SellMode ?? new char(), Convert.ToInt32(item.TotalSellNum ?? 0)))
};
var sell = from s in db.Sell
group s by new { s.SellStore, s.GoodID } into sInto
select new
{
StoreID = sInto.Key.SellStore,
GoodID = sInto.Key.GoodID,
SellNum = sInto.Sum(item => NumberConverter(item.SellMode ?? new char(), Convert.ToInt32(item.TotalSellNum ?? 0)))
};
- Linq 的 Case
- Select case in LINQ
- linq to sql case when 语句的实现
- Linq +Contains+ Case Insensitive 检索查询不区分大小写方法
- case是可以嵌套case的
- sql case when case 的使用
- case的使用
- case关键字的用法
- case的一种用法
- SQL case的用法
- case when 的妙用
- oracle的case函数
- case的用法
- Oracle的Case语句
- 连接,CASE的使用
- case when 的用法
- switch-case的用法
- case ..when..的使用
- java有用链接
- eclipse常用快捷键和调试
- 用opencms创建首页时页眉和页脚没出现?
- regex强大工具:org.apache.oro.text.regex中的PatternMatcher使用之contains()与matchs()的区别
- Android开发指南-窗口小部件(App Widgets)
- Linq 的 Case
- JDK 中KERTOOL工具的使用方法
- C# 判断文件名中是否有非法字符
- junit单元测试
- rsync使用时的常见问题
- 字符串按固定格式的处理
- log4j 详解
- nicEdit小结
- 学习制作安装程序的网址