You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将VB中的布尔条件转换为C#?ASP.NET项目代码迁移咨询

把VB布尔条件转换为C#语法

嘿,我来帮你搞定这段VB到C#的条件转换~ 先拆解你原来VB代码里的核心逻辑,再给出对应的C#实现:

原VB代码的核心逻辑

你这段VB代码用了IIf函数来根据includeOrderDetails的布尔值决定拼接不同的字符串,还有&做字符串拼接:

CStr(IIf(includeOrderDetails,",LO.patientprofileid,LO.doctorid,LO.order_datetime ", "")) & _

对应的C#实现

在C#里,我们用**三元运算符?:**来替代VB的IIf,用+来做字符串拼接(简单场景下+完全够用,复杂场景也可以用String.Concat)。转换后的代码是:

(includeOrderDetails ? ",LO.patientprofileid,LO.doctorid,LO.order_datetime " : "") +

补充细节和优化建议

  1. 类型安全优势:C#的三元运算符比VB的IIf更严谨——VB的IIf会同时计算两个分支的表达式,而C#的三元只会执行符合条件的那个分支,避免不必要的计算。
  2. SQL拼接的更优写法:如果这段代码是用来构建SQL语句的,用StringBuilder会更高效,尤其是拼接复杂SQL的时候:
var sqlBuilder = new StringBuilder();
// 先添加基础的列或SQL片段
sqlBuilder.Append("基础列名称");

if (includeOrderDetails)
{
    sqlBuilder.Append(",LO.patientprofileid,LO.doctorid,LO.order_datetime ");
}
// 后续继续构建SQL语句...
  1. 完整的C#方法示例:把这段逻辑放到你的GetLabTestsOrdered方法里,大概是这样:
public DataSet GetLabTestsOrdered(long lOrderID, bool includeOrderDetails = false)
{
    // 示例:构建SQL查询的列部分
    string sqlColumns = "基础列" + (includeOrderDetails ? ",LO.patientprofileid,LO.doctorid,LO.order_datetime " : "");
    
    // 这里写你的DataSet查询逻辑,比如调用数据库获取数据
    DataSet result = new DataSet();
    // ... 数据库操作代码 ...
    
    return result;
}

内容的提问来源于stack exchange,提问作者Sridhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:16:38