c# - 如何在 c# linq 中添加 sql 'when' 功能
问题描述
我有以下参数:
public object GetDataByProjectCostID(string employeeid, DateTime costdate, int id = 0)
和查询:
var projectCost = (from pc in db.ProjectCosts
where pc.ProjectCostID == id
where System.Data.Entity.DbFunctions.TruncateTime(pc.CostDate) == costdate.Date
join p in db.Projects
on pc.ProjectID equals p.ProjectID
join sct in db.SubCostTypes
on pc.SubCostTypeID equals sct.SubCostTypeID
join ct in db.CostTypes
on sct.CostTypeID equals ct.CostTypeID
select new
{
p.ProjectName,
ct.CostTypeName,
ct.CostTypeID,
sct.SubCostTypeName,
pc.ProjectID,
pc.ProjectCostID,
pc.SubCostTypeID,
pc.Amount,
pc.Quantity,
pc.Note,
pc.CreatedBy,
sct.Unit,
pc.CreateDate,
pc.CostDate,
pc.ProjectCostImage
}).ToList();
现在我的问题是如何在查询中添加可选参数。假设如果请求中不存在 id 那么我需要跳过 where 子句
其中 pc.ProjectCostID == id
在 sql 中我们可以使用 when 子句,但是在 LINQ 中呢?提前致谢。
解决方案
尝试这个
where (( id==0 || pc.ProjectCostID == id)
&& System.Data.Entity.DbFunctions.TruncateTime(pc.CostDate) == costdate.Date)
推荐阅读
- reactjs - 如何在 ReactJS/nextjs 中将值从父级传递给子级
- javascript - 使用 React.js 使用 Google Maps Javascript API 添加标记的问题
- mysql - 如果表存在同名,如何在创建表期间自动增加表名
- filtering - 我可以创建一个包含“链接记录”列中不存在的记录的 Airtable 视图吗?
- laravel - 从 laravel 中的 json 中删除枢轴键
- javascript - 如何选择生成多少个随机字符串?
- vue.js - 从 .js 文件 vuejs 访问组件
- ios - 将数据保存在来自 ios swift 中 2 个不同 uitableviews 的数组中
- xml - 努力理解 Google 表格 IMPORTXML 和 Xpath
- android - 是否可以使用 firebase ML 套件检测性别