linq - 编写 LINQ 尝试创建一个在 C# 程序中运行的 LINQ
问题描述
我目前正在创建一个下拉列表,并希望在编写 LINQ 查询时找到帮助......
这是我要复制的 SQL:
select
IIf
(
TA.[LeaseDeptSubmittal] IS NOT NULL
AND TA.[LeaseDeptComplete] IS NULL, 'Lease Dept',
IIf
(
TA.[CompleteDate] IS NULL
AND TA.[RequestAddtnlInfo] IS NOT NULL, 'Need Info',
IIf
(
TA.[RequestDate] IS NULL, '',
IIf
(
TA.[RequestDate] IS NOT NULL
AND TA.[CompleteDate] IS NULL, 'Pending', 'Complete'
)
)
)
) ,
Id
from Tasks TA
解决方案
您可以IIF
直接将其转换为 C# (LINQ) 三元条件运算符,然后您可以按照我的SQL to LINQ Recipe进行操作。
var ans = from TA in Tasks
select new {
Status = (TA.LeaseDeptSubmittal != null &&
TA.LeaseDeptComplete == null)
? "Lease Dept"
: (TA.CompleteDate == null &&
TA.RequestAddtnlInfo != null)
? "Need Info"
: TA.RequestDate == null
? ""
: (TA.RequestDate != null && TA.CompleteDate == null) ? "Pending" : "Complete",
TA.Id
};
我通常不会这样缩进?:
,但是嵌套很深(在一种情况下不必要地冗余)所以我把所有东西都移走了。
我会像这样重新工作以删除多余的测试并清除一些逻辑:
var ans = from TA in Tasks
select new {
Status = (TA.LeaseDeptSubmittal != null &&
TA.LeaseDeptComplete == null)
? "Lease Dept"
: TA.CompleteDate != null
? "Complete"
: TA.RequestAddtnlInfo != null
? "Need Info"
: TA.RequestDate != null
? "Pending"
: "",
TA.Id
};
推荐阅读
- javascript - EventListener arraylength 或 childElementCount
- powershell - Ansible command wont output as playbook
- uiviewcontroller - 使用intrinsicContentsize嵌入UIViewController
- c# - 不工作的侦听器不要统一销毁加载对象
- c# - 如何在统一 3D 中将宇宙飞船从 y 轴向左旋转
- qt - 样式化自定义 QWidget
- node.js - 无法解密 xor-base64 文本
- c# - 动作需要 Swagger 的唯一方法/路径组合
- reactjs - React 材质主题选择器
- json - ajax 解析跨域