linq where条件是方法的时候怎么处理

zzc_king 2011-05-18 08:32:57
例如:

var contracts = from c in db.B_Contract_Out
join h in db.B_Hospital on c.HospitalID equals h.ID into ch
where c.C4 == "1"
where c.ContractDate>=startDate && c.ContractDate<=backDate// 想在这再加个条件 就是GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID)!=0 怎么处理
from chs in ch.DefaultIfEmpty()
join u in db.sys_User on c.PrincipalUser equals u.UserID into cu
from cus in cu.DefaultIfEmpty()
orderby c.ContractDate descending
join p in db.B_PayRecord on c.ID equals p.ContractID into cp
from cps in cp.DefaultIfEmpty()
where c.AllMoney != Convert.ToDouble(cps.PayMoney)
orderby c.ContractDate descending
select new { ArmNames = GetArmariumName(c.ID), ArmOutPrice = GetArmOutPrice(c.ID), c.ID, c.ContractDate, c.ContactNum, cus.U_CName, c.AllMoney, chs.HospitalName, qiankuan = GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID) };

等待...
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hualilihua 的回复:]

list.where(i=>i.no==num) 与 list.select(i=>i.no==num)有什么不同???
[/Quote]
没有这种写法:list.select(i=>i.no==num)
只有这种: list.select(i=>new{num=i.no})
回头是岸 2011-05-18
  • 打赏
  • 举报
回复
list.where(i=>i.no==num) 与 list.select(i=>i.no==num)有什么不同???
q107770540 2011-05-18
  • 打赏
  • 举报
回复
或者这样:

var contracts = from c in db.B_Contract_Out
join h in db.B_Hospital on c.HospitalID equals h.ID into ch
where c.C4 == "1"
where c.ContractDate>=startDate && c.ContractDate<=backDate
from chs in ch.DefaultIfEmpty()
join u in db.sys_User on c.PrincipalUser equals u.UserID into cu
from cus in cu.DefaultIfEmpty()
orderby c.ContractDate descending
join p in db.B_PayRecord on c.ID equals p.ContractID into cp
from cps in cp.DefaultIfEmpty()
where c.AllMoney != Convert.ToDouble(cps.PayMoney)
orderby c.ContractDate descending
select new { ArmNames = GetArmariumName(c.ID), ArmOutPrice = GetArmOutPrice(c.ID), c.ID, c.ContractDate, c.ContactNum, cus.U_CName, c.AllMoney, chs.HospitalName, qiankuan = GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID) };

contracts =contracts.ToList().Where(c=> GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID)!=0);
q107770540 2011-05-18
  • 打赏
  • 举报
回复
var contracts = from c in db.B_Contract_Out
join h in db.B_Hospital on c.HospitalID equals h.ID into ch
where c.C4 == "1"
where c.ContractDate>=startDate && c.ContractDate<=backDate
&& GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID)!=0
from chs in ch.DefaultIfEmpty()
join u in db.sys_User on c.PrincipalUser equals u.UserID into cu
from cus in cu.DefaultIfEmpty()
orderby c.ContractDate descending
join p in db.B_PayRecord on c.ID equals p.ContractID into cp
from cps in cp.DefaultIfEmpty()
where c.AllMoney != Convert.ToDouble(cps.PayMoney)
orderby c.ContractDate descending
select new { ArmNames = GetArmariumName(c.ID), ArmOutPrice = GetArmOutPrice(c.ID), c.ID, c.ContractDate, c.ContactNum, cus.U_CName, c.AllMoney, chs.HospitalName, qiankuan = GetQianKuan(Convert.ToDouble(c.AllMoney), c.ID) };

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧